SonarQube est un outil open source développée par SonarSource. Il est écrit en Java et prend en charge plusieurs bases de données. Fournit des capacités pour inspecter en continu le code, montrer la santé d'une application et mettre en évidence les problèmes récemment introduits. Contient des analyseurs de code pour détecter des problèmes complexes. Il s'intègre également facilement avec DevOps.
Dans cet article on va installer SonarQube sur Centos 7 et on va lancer un premier scan.

Prérequis

Désactiver SELinux

Changer “SELINUX=enforcing” en “SELINUX=disabled” dans le fichier /etc/sysconfig/selinux.

Ajouter les lignes suivantes dans le fichier sysctl.conf:

Copy to Clipboard
Mettre à jour le système et redémarrer
Copy to Clipboard

Installation Java 11

Copy to Clipboard

Ajouter à la fin du fichier /etc/bashrc:

Copy to Clipboard

Pour vérifier la version de java: java -version

Installation PostgreSQL

Copy to Clipboard

Initialisation de la base de donnes:

Copy to Clipboard

Modifications du fichier /var/lib/pgsql/12/data/pg_hba.conf

Original:

Copy to Clipboard

Après modification:

Copy to Clipboard
Copy to Clipboard

Changer le mot de passe de l'utilisateur postgres:

Copy to Clipboard

Passer à l'utilisateur postgres:

Copy to Clipboard

Créer un nouvel utilisateur:

Copy to Clipboard

Basculer vers le shell PostgreSQL:

Copy to Clipboard

Définissez un mot de passe pour le nouvel utilisateur créé pour la base de données SonarQube:

Copy to Clipboard

Créer une nouvelle base de données pour la base de données PostgreSQL:

Copy to Clipboard

Quittez le shell psql et se déconnecter de l’utilisateur postgres:

Copy to Clipboard

Télécharger et configurer SonarQube

Copy to Clipboard

Se rendre dans le fichier: /opt/sonarqube/conf/sonar.properties
Trouver les lignes suivantes. Dé-commenter et modifier les valeurs.

Copy to Clipboard

Créer un utilisateur sonar & changer son mot de passe:

Copy to Clipboard

Créer les dossiers suivants:

Copy to Clipboard

Changer les droits sur les dossiers:

Copy to Clipboard

Configurer Sonarqube en tant que service /etc/systemd/system/sonarqube.service) :

Copy to Clipboard

Commandes de démarrage:

Copy to Clipboard

Logs :

Copy to Clipboard

Sonarqube est accessible en local sur le port 9000. Si vous souhaitez accéder a l’interface Sonarqube je vous conseille de générer un certificat letsencrypt et de réaliser un proxy avec votre serveur web préféré. Cette partie ne sera pas démontré dans cet article. La documentation officielle pourra vous aider.

La première question à laquelle il faut répondre lors de la définition de la stratégie de sécurité pour SonarQube est la suivante: les utilisateurs anonymes peuvent-ils parcourir l'instance SonarQube ou une authentification est-elle requise?

Pour forcer l'authentification des utilisateurs, connectez-vous en tant qu'administrateur système, accédez à Administration > Configuration > General Settings > Security et définissez la propriété Force user authentication sur true.

Installer sonnar-scanner

Copy to Clipboard

Lancer son premier scan

Pour réaliser son premier scan il faut que le projet soit disponible sur la machine qui dispose de sonar-scanner. Deux méthodes existent pour le lancement du scan :

La première méthode consiste a créer un nouveau fichier dans le chemin du dossier racine de votre projet avec le nom sonar-project . L'extension du fichier sera .properties.

Ajouter les configurations de base suivantes dans le fichier sonar-project.properties:

Copy to Clipboard

Vous trouverez dans la documentation officielle tous les paramètres pour le scan.

Pour lancer le scan :

Copy to Clipboard

La deuxième méthode consiste a lancer la commande avec tous les variables du projet. Pratique si on ne veut pas créer un nouveau fichier.

Copy to Clipboard

Si vous accédez à la plate-forme via votre navigateur, vous verrez le tableau de bord avec les données du résultat de l'analyse.

Vous avez les données concernant la qualité de votre code. Ces données sont une des étapes pour l'amélioration et le suivi votre code.

Happy coding!!!