Accueil Nos publications Blog Mega Linter : votre meilleur ami pour un code de qualité

Mega Linter : votre meilleur ami pour un code de qualité

header-devops

Sommaire

  1. Introduction et présentation de Mega Linter
  2. Utilisation de Mega Linter en ligne de commande
  3. Configuration de Mega Linter
  4. Intégration de Mega Linter dans une pipeline GitLab CI
  5. Pourquoi Mega Linter est-il le meilleur choix parmi les autres linters
  6. Conclusion

Introduction et présentation de Mega Linter

Vous savez à quel point il est important de maintenir un code de qualité et de respecter les conventions de style dans votre projet. Mais parfois, entre les bugs à résoudre, les deadlines à respecter et les nouvelles fonctionnalités à implémenter, il peut être difficile de trouver le temps de vérifier manuellement chaque ligne de code. C’est là que Mega Linter entre en jeu !

Mega Linter est un outil de linting puissant qui vous permet de vérifier votre code à la volée, quel que soit le langage de programmation que vous utilisez. Il vous alerte, entre autres, des erreurs de syntaxe, des problèmes de style, etc. qui peuvent compromettre la qualité de votre code. Et le meilleur dans tout ça ? Mega Linter peut être utilisé en ligne de commande ou intégré dans une pipeline de livraison continue, ce qui vous permet de vous concentrer sur ce qui compte vraiment : l’écriture de code propre.

Pour en savoir plus sur les fonctionnalités de Mega Linter et comment l’utiliser, consultez la documentation officielle sur https://megalinter.io/.

Utilisation de Mega Linter en ligne de commande

Vous voulez utiliser Mega Linter pour vérifier votre code sans même sortir de votre terminal ?
Tout ce dont vous avez besoin est npx, qui est inclus avec npm. Si vous n’avez pas encore npx, vous pouvez l’installer en exécutant :

npm install -g npx

Une fois que vous avez npx, utiliser Mega Linter est aussi simple que d’entrer npx mega-linter-runner dans votre terminal, suivi de toutes les options que vous souhaitez utiliser.

Voici quelques exemples d’utilisation de Mega Linter en ligne de commande :

1. Vérifier tout le code dans votre projet :

npx mega-linter-runner

2. Vérifier seulement les fichiers Python dans votre projet :

npx mega-linter-runner --flavor python

3. Vérifier tout le code dans votre projet et appliquer les corrections :

npx mega-linter-runner --flavor python --fix

Configuration de Mega Linter

Vous voulez personnaliser votre expérience de linting avec Mega Linter ? Pas de problème ! Mega Linter offre une grande flexibilité et vous permet de définir vos propres règles de linting et de les appliquer à votre projet.

Pour configurer Mega Linter, vous pouvez utiliser le fichier .mega-linter.yml situé à la racine de votre projet. Dans ce fichier, vous pouvez définir les règles de linting que vous souhaitez utiliser, ainsi que les fichiers et répertoires à ignorer.

Voici un exemple de configuration de Mega Linter :

# Configuration file for MegaLinter .mega-linter.yml
# See all available variables at https://megalinter.io/configuration/ and in linters documentation

APPLY_FIXES: all
# ENABLE: # If you use ENABLE variable, all other languages/formats/tooling formats will be disabled by default
# ENABLE_LINTERS: # If you use ENABLE_LINTERS variable, all other linters will be disabled by default
DISABLE:
  - CLOUDFORMATION
  # - COPYPASTE # Uncomment to disable checks of excessive copy-pastes
  - CSS
  - EDITORCONFIG
  # - SPELL # Uncomment to disable checks of spelling mistakes
  - JAVASCRIPT
  - TEKTON
DISABLE_LINTERS:
  - JSON_PRETTIER
  - REPOSITORY_GITLEAKS
  - SPELL_PROSELINT
DISABLE_ERRORS_LINTERS:
  - PYTHON_BANDIT
  - PYTHON_PYRIGHT
  - REPOSITORY_DEVSKIM
  - REPOSITORY_SEMGREP
PRINT_ALL_FILES: false
FILTER_REGEX_EXCLUDE: '(\.automation/test|\.automation/generated|\.github/workflows|docs/javascripts|docs/overrides|docs/json-schemas|
flavors|clj-kondo|TEMPLATES)'
JSON_JSONLINT_FILTER_REGEX_EXCLUDE: '(\.vscode/)'
YAML_YAMLLINT_FILTER_REGEX_EXCLUDE: '(templates/\.mega-linter\.yml)'
YAML_PRETTIER_FILTER_REGEX_EXCLUDE: '(templates/\.mega-linter\.yml|mkdocs\.yml)'
YAML_V8R_FILTER_REGEX_EXCLUDE: '(descriptors|templates/\.mega-linter\.yml|\.codecov\.yml)'
BASH_FILTER_REGEX_EXCLUDE: "(lib)"
MARKDOWN_FILTER_REGEX_EXCLUDE: '(license\.md)'
MARKDOWN_MARKDOWN_LINK_CHECK_DISABLE_ERRORS: true
SPELL_MISSPELL_FILTER_REGEX_EXCLUDE: '(\.automation/generated|docs/descriptors|used-by-stats)'
DOCKERFILE_HADOLINT_ARGUMENTS: "--ignore DL3003 --ignore DL3007 --ignore DL3013 --ignore DL3016 --ignore DL3018 --ignore DL3028 
--ignore DL3059 --ignore DL4001 --ignore DL4006 --ignore SC2015 --ignore SC2016 --ignore SC2039 --ignore SC2086 --ignore SC1091 --ignore SC3046"
REPOSITORY_TRIVY_ARGUMENTS:
  - "--skip-dirs"
  - ".automation/test"
SHOW_ELAPSED_TIME: true
EMAIL_REPORTER: false
FILEIO_REPORTER: true
JSON_REPORTER: true
GITHUB_STATUS_REPORTER: false
PLUGINS:
  - https://raw.githubusercontent.com/oxsecurity/megalinter/main/.automation/test/mega-linter-plugin-test/test.megalinter-descriptor.yml
PRE_COMMANDS:
  - command: echo "This is MegaLinter PRE_COMMAND on own MegaLinter ! :)"
    cwd: "root"
POST_COMMANDS:
  - command: echo "This is MegaLinter POST_COMMAND on own MegaLinter ! :)"
    cwd: "workspace"

Intégration de Mega Linter dans une pipeline GitLab CI

    Vous savez à quel point il est important de maintenir un code de qualité dans votre projet, et cela inclut également les pipelines de livraison continue. Si vous utilisez GitLab pour gérer votre projet, vous pouvez facilement intégrer Mega Linter dans votre pipeline de CI pour vous assurer que votre code respecte les conventions de style avant qu’il ne soit livré.

    Mais attention, les linters doivent être au niveau de la partie code de la boucle DevOps, sinon ils risquent de devenir de véritables moustiques dans votre pipeline. Alors n’oubliez pas de placer vos tâches de linting au bon endroit dans votre pipeline GitLab CI pour éviter les mauvaises surprises.

    Voici quelques exemples d’intégration de Mega Linter dans une pipeline GitLab CI :

    1. Vérifier le code avant chaque commit :

    ---
    stages:
      - code
      
    # MegaLinter GitLab CI job configuration file
    # More info at https://megalinter.github.io/
    mega-linter:
      stage: code
      # You can override MegaLinter flavor used to have faster performances
      # More info at https://megalinter.github.io/flavors/
      image: oxsecurity/megalinter:v6
      script: [ "true" ] # if script: ["true"] does not work, you may try ->  script: [ "/bin/bash /entrypoint.sh" ]
      variables:
        # All available variables are described in documentation
        # https://megalinter.github.io/configuration/
        DEFAULT_WORKSPACE: $CI_PROJECT_DIR
        # ADD YOUR CUSTOM ENV VARIABLES HERE TO OVERRIDE VALUES OF .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
      artifacts:
        when: always
        paths:
          - megalinter-reports
        expire_in: 1 week
      rules:
        - if: $CI_COMMIT_BEFORE_SHA

    2. Vérifier le code avant chaque push sur une branche spécifique :

    ---
    stages:
      - code
      
    # MegaLinter GitLab CI job configuration file
    # More info at https://megalinter.github.io/
    mega-linter:
      stage: code
      # You can override MegaLinter flavor used to have faster performances
      # More info at https://megalinter.github.io/flavors/
      image: oxsecurity/megalinter:v6
      script: [ "true" ] # if script: ["true"] does not work, you may try ->  script: [ "/bin/bash /entrypoint.sh" ]
      variables:
        # All available variables are described in documentation
        # https://megalinter.github.io/configuration/
        DEFAULT_WORKSPACE: $CI_PROJECT_DIR
        # ADD YOUR CUSTOM ENV VARIABLES HERE TO OVERRIDE VALUES OF .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
      artifacts:
        when: always
        paths:
          - megalinter-reports
        expire_in: 1 week
      rules:
        - if: $CI_COMMIT_REF_NAME == 'staging'

    3. Vérifier le code avant chaque merge sur la branche main :

    ---
    stages:
      - code
      
    # MegaLinter GitLab CI job configuration file
    # More info at https://megalinter.github.io/
    mega-linter:
      stage: code
      # You can override MegaLinter flavor used to have faster performances
      # More info at https://megalinter.github.io/flavors/
      image: oxsecurity/megalinter:v6
      script: [ "true" ] # if script: ["true"] does not work, you may try ->  script: [ "/bin/bash /entrypoint.sh" ]
      variables:
        # All available variables are described in documentation
        # https://megalinter.github.io/configuration/
        DEFAULT_WORKSPACE: $CI_PROJECT_DIR
        # ADD YOUR CUSTOM ENV VARIABLES HERE TO OVERRIDE VALUES OF .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
      artifacts:
        when: always
        paths:
          - megalinter-reports
        expire_in: 1 week
      rules:
        - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'main'

    En intégrant Mega Linter dans votre pipeline GitLab CI, vous pouvez vous assurer que votre code respecte les conventions de style avant qu’il ne soit livré à votre projet. Cela vous permet de maintenir un code de qualité supérieure et de réduire les risques de bugs et d’erreurs.

    Pourquoi Mega Linter est-il le meilleur choix parmi les autres linters

    Il y a beaucoup de linters disponibles sur le marché. Voici quelques bonnes raisons de choisir Mega Linter :

    • Mega Linter prend en charge un large éventail de langages de programmation. Vous pouvez donc l’utiliser pour vérifier plusieurs types de code.
    • Il est facile à utiliser et à configurer, ce qui vous permet de commencer à l’utiliser rapidement.
    • Mega Linter est flexible et personnalisable, vous pouvez définir vos propres règles de linting et les appliquer à votre projet.
    • Mega Linter est intégrable dans un pipeline de livraison continue. Cela vous assure que votre code respecte les conventions de style avant qu’il ne soit livré.
    • La cerise sur le gâteau : Mega Linter intègre maintenant les éléments de sécurité d’OX Security. Cela vous permet de vérifier votre code et de garantir votre projet sur des aspects sécurité, tout en vous assurant que votre code respecte les conventions de style.

    Conclusion

    En résumé, Mega Linter est un outil de linting puissant qui vous permet de maintenir un code de qualité supérieure dans votre projet. Grâce à sa compatibilité avec de nombreux langages de programmation, à ses nombreuses fonctionnalités et sa facilité d’utilisation, il est difficile de trouver actuellement un meilleur linter sur le marché.

    Vous pouvez utiliser Mega Linter en ligne de commande ou l’intégrer dans un pipeline de livraison continue, ce qui vous permet de vous concentrer sur ce qui compte vraiment : l’écriture de code propre.

    Vous souhaitez en savoir plus ? Contactez-nous !