Docker Code Analysis Tool (CAT) est une image Docker Sonarqube contenant une configuration et des plugins personnalisés pour réaliser l'analyse du code.
Sonarqube est une plate-forme ouverte pour gérer la qualité du code.
Ce projet est un logiciel gratuit; Vous pouvez le redistribuer et / ou le modifier en vertu des termes de la licence publique générale GNU publiée par la Free Software Foundation; soit la version 3 de la licence, soit (à votre option) toute version ultérieure.
Vous pouvez obtenir sonarqube sur GitHub: SonarSource / Sonarqube.
Trouvez des identifiants de groupe pour permettre à l'analyse de Sonarqube (pour le plugin de scan CNES de Sonar):
getent group <group_name> | cut -d : -f3 pour atteindre un ID de groupe à partir d'un nom de groupe connu;cat /etc/group pour répertorier tous les ID de groupe. ❗ Ce groupe devrait avoir des autorisations read et execution sur tous les projets à analyser (pour parcourir et analyser tous les fichiers) et write des autorisations sur la racine de l'espace de travail (pour exécuter des outils C / C ++ et un scanner de sonar).
Trouvez la version que vous souhaitez utiliser sur DockerHub: https://hub.docker.com/r/lequal/docker-cat ou utilisez simplement la latest image qui correspond à la branche maître de ce projet.
Exécutez le conteneur Docker Cat:
docker pull lequal/docker-cat
docker run --rm --name=cat -v < your_folder > :/media/sf_Shared:rw -p 9000:9000 -e ALLOWED_GROUPS= " <GID_1>;<GID_2>;<GID_...> " lequal/docker-cat: < version > ❗ Cet exemple utilise l'option --rm donc lorsque le conteneur s'arrête et sera détruit avec toutes ses données.
❗ Évitez d'utiliser 0 comme guide (par exemple: -e ALLOWED_GROUPS=0 ): il peut provoquer des conflits avec l'utilisateur racine du conteneur.
Vous pouvez vous connecter dans sonarqube de Docker Cat en tant qu'administrateur avec les informations d'identification Sonarqube par défaut. Comme il n'est pas sécurisé (tout le monde le sait!), Assurez-vous d'exécuter Docker Cat dans un environnement sécurisé ou de modifier les informations d'identification par défaut.
adminadminEn tant qu'administrateur, vous pouvez modifier toute configuration que vous souhaitez en tant que valeurs par défaut, règles activées ou conditions de porte de qualité ...
Par défaut, Docker Cat utilise la base de données H2 intégrée qui est intégrée à Sonarqube: elle ne doit pas être utilisée pour une utilisation à long terme. C'est pourquoi si vous vous attendez à conserver vos données pendant un certain temps, vous devriez envisager de mettre en place une base de données plus forte comme décrit dans la documentation officielle.
Une fois que le conteneur est actif, vous pouvez utiliser l'interface Web fournie par le plugin Sonar CNE SCAN pour exécuter une analyse directement via votre navigateur Web. #FAIRE
<your_folder>Pour être accessible par tous les outils inclus, votre code source doit être placé dans le volume Docker précédemment monté et le groupe dont le GUID a été remis à
-e ALLOWED_GROUPS=...Le paramètre devrait avoir des autorisations sur l'ensemble du répertoire.
❗ Si vous rencontrez des difficultés avec des autorisations sur les fichiers dans des volumes montés (en raison de la configuration de votre système), vous pouvez copier directement votre code dans le conteneur. Exécutez la commande docker run en supprimant toutes les options -v ou --volume et copiez votre répertoire dans le répertoire /media/sf_Shared du conteneur en utilisant cette commande docker cp <my_directory> cat:/media/sf_Shared .
Ouvrez simplement votre navigateur Web préféré et accédez à l'interface Sonarqube en tapant le Docker Cat IP / URL suivi de
:et le port est cartographié sur le port 9000 du conteneur. Si vous démarrez Docker Cat sur votre poste de travail avec la commande par défaut proposée précédemment, vous devez avoir taperhttp://localhost:9000dans votre barre d'adresse.
Lorsque Sonarqube s'est chargé, cliquez sur
Moredans la barre d'outils supérieure noire et sélectionnezCNES Analysis. Une nouvelle page doit apparaître avec le formulaire d'analyse.

Remplissez le formulaire en faisant attention à:
- champs avec un astérisque rouge: ils sont obligatoires
- Champs d'
Workspace: par défaut, laissez un point.dans ce domaine. Si vous souhaitez limiter la portée de l'analyse, tapez le chemin relatif du répertoire/mnt/sf_Shared.- Champs d'
Workspace: par défaut, laissez un point.dans ce domaine. Si vous souhaitez limiter les fichiers / chemin considérés comme des fichiers source (par opposition aux fichiers de test), saisissez une liste de chemin relative séparée par COMA à partir du répertoireWorkspace.Run C/C++ tools: Allumez le bouton si vous souhaitez exécuter des outils intégrés (CPPCHECK, VERA ++ et RATS). Si vous analysez le code C ou C ++ et que vous avez déjà des résultats CPPCheck, Vera ++ ou Rats dans votre répertoire de travail, vous pouvez utiliser le champsonar-project.propertiespour désigner l'emplacement de ces résultats et désactiver l'analyse. Reportez-vous à la documentation Sonar-CXX pour plus d'informations.sonar-project.propertiesChamp: Utilisez ce champ pour ajouter une configuration plus avancée. Reportez-vous à la documentation officielle.

Cliquez simplement sur le bouton
Analyzeen bas de la page pour exécuter l'analyse. Lors de l'exécution avec succès, un téléchargement d'archives doit démarrer dans votre navigateur Web. Il contient tous les résultats de votre analyse. Si vous avez déjà une analyse dans votre instance CAT, vous pouvez régénérer le rapport sans relancer l'analyse en utilisant la forme dansMore>CNES Report.
Vous pouvez exécuter une analyse avec la méthode classique en utilisant l'un des scanners fournis par Sonarsource. Vous devez simplement donner l' URL ou IP où Docker Cat a été lancé et le port correspondant que vous donnez dans votre commande Docker pour le port 9000 . Pour plus d'informations, utilisez les scanners de Sonarsource comme décrit dans la documentation officielle.
❗ Avec ces méthodes, un outil automatique comme cppcheck peut ne pas fonctionner, s'ils ne sont pas correctement définis.
Ce système d'exploitation liste sur lequel Docker Cat a été testé (marqué comme ✔️) ou non (marqué comme❓) ou tout simplement non pris en charge (marqué comme).
| Version Docker Cat | Linux (Centos et Debian) | Mac OS | Fenêtre |
|---|---|---|---|
3.2.2 | ✔️ | ❓ | ❓ |
3.0.0 | ✔️ | ❓ | ❓ |
2.1.0 | ✔️ | ❓ | ❓ |
2.0.2 | ✔️ | ❓ | ❓ |
2.0.1 | ✔️ | ❓ | ❓ |
< 2.0.0 | ✔️ | ❓ | ✔️ |
Les logiciels nouveaux et mis à jour sont marqués d'emoji ?.
| Outils | Versions |
|---|---|
| ? Sonarqube-catlab | 3.2.2 |
| ? Scanner sonar | 5.0.1.3006 |
| ? Cppcheck | 2.13.0 |
| ? I-Code CNES | 4.1.2 |
| ? python3 | 3.10.4 |
| ? pépin | 22.0.2 |
| ? setuptools-sc-scm | 8.0.4 |
| ? pytest-coureur | 6.0.1 |
| ? envelopper | 1.16.0 |
| six | 1.16.0 |
| ? paresseux-object-proxy | 1.10.0 |
| mccabe | 0.7.0 |
| ? isorter | 5.13.2 |
| ? dactylographié | 1.5.5 |
| astroïde | 2.15.2 |
| pylint | 2.17.2 |
| CNES-PYLINT-Extension | 6.0.0 |
| faire | 4.3 |
| GCC | 4: 11.2.0 |
| Chricha | 0.8.0 |
Si vous avez rencontré un problème avec le plugin, veuillez ouvrir un problème. À l'intérieur de ce problème, veuillez nous expliquer comment reproduire ce problème et coller le journal.
Si vous souhaitez faire un PR, veuillez mettre à l'intérieur la raison de cette demande de traction. Si cette demande de traction résolve un problème, veuillez insérer le numéro du problème ou expliquer à l'intérieur du PR comment reproduire ce problème.
Tous les détails sont disponibles en contribution.
Bogues et demandes de fonctionnalités: https://github.com/cnescatlab/docker-cat/issues
Licencié sous la licence publique générale GNU, version 3.0