web-dev-qa-db-fra.com

Qualité du code Gitlab: où est le rapport?

Sur ce projet: https://gitlab.com/tyvain/parcoursup/tree/master

J'ai une étape de qualité de code:

code_quality:
  stage: code_quality
  image: docker:stable
  variables:
    DOCKER_DRIVER: overlay2
  allow_failure: true
  services:
    - docker:stable-dind
  script:
    - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
    - docker run
        --env SOURCE_CODE="$PWD"
        --volume "$PWD":/code
        --volume /var/run/docker.sock:/var/run/docker.sock
        "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
  artifacts:
    paths: [gl-code-quality-report.json]

Cette étape finit toujours par "passer". Journaux: https://gitlab.com/tyvain/parcoursup/-/jobs/94665791

Je doute que mon code soit parfait, donc il devrait y avoir des problèmes de qualité de code quelque part.

Où le rapport sur la qualité du code est-il censé être généré?
Quel est ce paramètre: "chemins d'accès: [gl-code-quality-report.json]"?

6
Tyvain

2 problèmes ici:

  • le rapport n'est disponible que pour la demande de fusion dans 'gitlab EE edition' (non gratuit)
  • le rapport peut être téléchargé sous forme de fichier json ici: where to download artifacts
6
Tyvain

GitLab analyse et affiche les résultats dans les demandes de fusion. Il fonctionne en comparant les résultats de qualité de code précédents, donc la première fois que vous fusionnez le travail dans master, vous ne verrez rien. Mais, il devrait fonctionner sur les demandes de fusion ultérieures.

C'est expliqué un peu plus en détail ici: Qualité du code

4
King Chung Huang

C'est vieux, mais en l'ajoutant ici, au cas où quelqu'un d'autre tomberait dessus. J'ai trouvé le même problème (succès, mais pas de sortie) et le résultat était que le test arrivait à expiration. Il y a un délai d'expiration par défaut de 900 secondes sur le moteur de climat climatique. Les images que le codeclimat utilise représentent bien plus de 1,5 Go de données, donc leur téléchargement prend une éternité sur une connexion lente. Lorsqu'ils expirent, ils renvoient le code de sortie 0, mais aucun rapport.

Vérifié en faisant cela localement:

docker run \
  --env CODECLIMATE_CODE=/path/to/my/code \
  --env CONTAINER_TIMEOUT_SECONDS=9000 \
  --volume /path/to/my/code:/code \
  --volume /tmp/cc:/tmp/cc \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --env CODECLIMATE_DEBUG=1 "codeclimate/codeclimate:0.83.0" \
  analyze -f json

L'ajout de CONTAINER_TIMEOUT_SECONDS en tant que variable d'environnement vous permettra de dépasser cela, si le délai d'attente est votre problème. Je ne suis pas allé plus loin dans GitLab, car la documentation fait défaut, et je seulement voulait le style de contrôle, toutes les autres choses ne sont pas fournies avec la qualité du code dans GitLab, et la documentation n'était pas claire sur comment faire ça.

0
Bob Lloyd