Introduction
SonarQube est un outil open source pour la gestion de la qualité du code et est une inspection statique du code< / un outil>, utilisant l'architecture B/S, il est principalement utilisé pour gérer la qualité du code source, et peut prendre en charge de nombreux langages informatiques, tels que php, java, C#, go, C/C++, Cobol, JavaScrip, Groovy, etc. Sonar peut détecter votre code grâce à des outils de détection de règles de code tels que PMD, CheckStyle, Findbugs, etc., et vous aider à découvrir les vulnérabilités du code, les bugs, les odeurs et d'autres informations.
La qualité du code peut être détectée à partir de sept dimensions :
1) Distribution de complexité (complexité) : un code trop complexe sera difficile à comprendre
2) Duplications : Le programme contient une grande quantité de code copié et collé, ce qui entraîne un code gonflé. Sonar peut afficher de graves duplications dans le code source.
3) Statistiques de tests unitaires (tests unitaires) : les statistiques et l'affichage de la couverture des tests unitaires, le développement ou les tests peuvent clairement comprendre la couverture du code de test
4) Règles de codage : Vérifiez si le code est conforme aux spécifications via Findbugs, PMD, CheckStyle, etc.
5) Taux de commentaires (commentaires) : S'il y a trop peu de commentaires de code, surtout après des changements de personnel, il sera plus difficile pour d'autres de prendre le relais ; s'il y en a trop, ce sera difficile à lire.
6) Bogues potentiels : Détectez les bogues potentiels via Findbugs, PMD, CheckStyle, etc.
7) Architecture et conception : recherchez des boucles, affichez les dépendances entre les packages et les classes et vérifiez le couplage entre les programmes
Architecture
La plateforme SonarQube se compose de 4 composants :
1) Un serveur SonarQube démarre 3 processus principaux :
-
Serveur Web pour les développeurs et les administrateurs Parcourir les instantanés de qualité et configurer les instances SonarQube
-
Le serveur de recherche basé sur Elasticsearch prend en charge la recherche à partir de l'interface utilisateur
-
Compute Engine Server est responsable du traitement des rapports d'analyse de code et de leur enregistrement dans la base de données SonarQube.
2) Une base de données SonarQube pour le stockage :
- Configuration de l'instance SonarQube (sécurité, paramètres du plugin, etc.)
- Instantanés de qualité des projets, des vues, etc.
3) Plusieurs plug-ins SonarQube sont installés sur le serveur, notamment la langue, le SCM, l'intégration, l'authentification, etc.
4) Exécutez un ou plusieurs SonarScanners sur votre serveur de build/intégration continue pour analyser le projet
L'intégration
1) Les développeurscodent dans leur IDE et exécutent une analyse locale à l'aide de SonarLint.
2) Les développeurs envoient le code vers des référentiels de gestion de code tels que Git
3) Via des serveurs d'intégration continue tels que Jenkens, et utilisez sonar-scanner
pour l'analyse du code
4) Le rapport d'analyse est envoyé au serveur SonarQube pour traitement.
5) SonarQube Server traite et stocke les résultats du rapport d'analyse dans la base de données SonarQube et affiche les résultats dans l'interface utilisateur.
6) Les développeurs examinent, commentent et contestent leurs problèmes via l'interface utilisateur de SonarQube pour gérer et réduire leur dette technique.
7) Utilisez l'API pour automatiser la configuration et extraire les données de SonarQube.
Installer le sonar
La version installée dans cet article est SonarQube 7.6. La version la plus élevée actuelle (27 juillet 2021 10:29:21) SonarQube 9.0. Le 10 avril 2019, SonarQube a publié un article indiquant qu'après la 7.9, toutes les versions de SonarQube cesseront de prendre en charge MySQL.
2)java1.8
3)Mysql 5.6
L'installation de CentOs6.9 peut faire référence au Blog
Après l'installation, vous pouvez ouvrir l'URL :
Installer un scanner sonar
Cet article utilise Sonar-scanner pour l'analyse du code
-
En fonction de l'environnement Téléchargement, cet article prend le système Linux comme exemple
-
Téléchargez le fichier sonar-scanner-cli-4.6.2.2472-linux.zip sur la machine virtuelle ou le serveur
-
décompresser
`unzip sonar-scanner-cli-4.6.2.2472-linux.zip`
-
Ajoutez sonar-scanner-4.6.2.2472-linux/bin aux variables d'environnement
vim /etc/profile
#配置 sonar-scanner SONAR_RUNNER_HOME=/opt/sonar-scanner-4.6.2.2472-linux PATH=$SONAR_RUNNER_HOME/bin:$PATH export SONAR_RUNNER_HOME export PATH
source /etc/profile
sonar-scanner -h
Vérifiez si l'ajout a réussiINFO: INFO: usage: sonar-scanner [options] INFO: INFO: Options: INFO: -D,--define <arg> Define property INFO: -h,--help Display help information INFO: -v,--version Display version information INFO: -X,--debug Produce execution debug output
-
Modifier le fichier de configuration du sonar-scanner
sonar-scanner-4.6.2.2472-linux/conf
-
vim sonar-scanner.properties
#Configure here general information about the environment, such as SonarQube server connection details for example #No information about specific project should appear here #----- Default SonarQube server sonar.host.url=http://127.0.0.1:10005 #----- Default source code encoding #sonar.sourceEncoding=UTF-8 sonar.jdbc.url=jdbc:mysql://127.0.0.1:3307/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false #数据库账号 sonar.jdbc.username=sonar #数据库密码 sonar.jdbc.password=sonar sonar.sorceEncoding=UTF-8
Ce fichier de configuration contient des informations générales sur l'environnement, telles que les détails de connexion au serveur SonarQube. Les informations sur des projets spécifiques ne doivent pas être configurées ici
-
code des instruments
SonarQube Créer un projet
- Ouvrez la page Web SonarQube pour créer un projet
Cet article utilise PHP pour l'analyse
Analyser le code à l'aide du Sonar-scanner
-
Entrez le chemin du projet de code qui doit être analysé
-
touch sonar-project.properties
Créez un fichier dans le chemin du projet, -
vim sonar-project.properties
# must be unique in a given SonarQube instance sonar.projectKey=test # --- optional properties --- # defaults to project key sonar.projectName=test # defaults to 'not provided' sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Defaults to . # 多个路径可以使用逗号隔开 sonar.sources=./app,./config # Encoding of the source code. Default is default system encoding sonar.sourceEncoding=UTF-8 #这个具体作用目前不太清除,官网也没写 sonar.java.binaries=. # SonarQube 创建项目生成的令牌 sonar.login=6c8148e18e76fbc96e73354
clé décrire sonar.projectKey La clé unique du projet. Les caractères autorisés sont : les lettres, les chiffres - , _ , . et : , avec au moins un caractère non numérique. sonar.sources Répertoires de fichiers dont le code doit être analysé. Utilisez des virgules pour séparer plusieurs fichiers. sonar.projectName Le nom du projet qui sera affiché sur l'interface Web. sonar.projectVersion Version du projet sonar.connexion Un jeton de connexion ou d'authentification pour un utilisateur SonarQube autorisé à effectuer une analyse sur le projet sonar.mot de passe Le mot de passe à utiliser avec le nom d'utilisateur sonar.login. Si un jeton d'authentification est utilisé, il doit rester vide sonar.projectDescription instructions de projet sonar.sourceEncoding L'encodage du fichier source. Par exemple : UTF-8 Veuillez vous référer à la documentation officielle pour les paramètres mis à jour
-
Exécuter dans le répertoire au même niveau que le fichier sonar-project.properties
sonar-scanner
-
Affichez la page Web SonarQube, vous pouvez voir que le projet de test a un
后台任务
en cours d'exécution. À ce moment, Sonar-scanner soumet les données au serveur SonarQube, et le SonarQube le serveur analyse les données -
Une fois la tâche en arrière-plan exécutée, vous pouvez afficher les résultats de l'analyse du code
SonarQube est facile à utiliser
Gestion des utilisateurs
-
Créer un groupe
- Configuration > Autorisations > Groupes > coin supérieur droit
- Configuration > Autorisations > Groupes > coin supérieur droit
-
Créer un utilisateur
- Configuration > Autorisations > Utilisateurs > coin supérieur droit
- Configuration > Autorisations > Utilisateurs > coin supérieur droit
-
Ajouter un utilisateur au groupe PHP
-
Configurer les permissions du groupe PHP sur le projet de test
- Projet -> Test Projet -> Configuration -> Autorisations
La page des autorisations peut définir le projet actuel comme étant un公开
projet actif私有
qui peut être attribué à six groupes PHP spécifiques Autorisations
- Projet -> Test Projet -> Configuration -> Autorisations
-
Classification des autorisations spécifiques
- Parcourir : visitez un projet, parcourez ses métriques, créez/modifiez ses problèmes.
- Afficher le code source : affichez le code source du projet. (L'utilisateur a également besoin de l'autorisation « Parcourir »)
- Gestionnaire de problèmes : apportez des modifications supplémentaires aux problèmes : définissez des faux positifs/ne sera pas corrigé, modifiez le niveau de gravité du problème. (L'utilisateur a également besoin de l'autorisation « Parcourir »)
- Gérer les hotspots de sécurité : Détectez les vulnérabilités via les « hotspots de sécurité ». Rejeter, nettoyer, accepter, rouvrir "Safe Hotspot" (les utilisateurs ont également besoin de l'autorisation "Parcourir")
- Administrateur : affichez la configuration du projet et effectuez des tâches de gestion. (L'utilisateur a également besoin de l'autorisation « Parcourir »)
- Exécuter l'analyse : vous pouvez obtenir toutes les configurations pour effectuer une analyse (y compris les configurations de sécurité, telles que les mots de passe) et transmettre les résultats de l'analyse au serveur SonarQube.
configuration de qualité
Une configuration qualité est un ensemble de règles utilisées lors de l’analyse. Chaque langue a une configuration par défaut. Les projets qui ne spécifient pas d'autres configurations utiliseront la configuration par défaut.
Il existe trois configurations de qualité pour PHP après installation Drupal
, PSR-2
, Sonar way
où Sonar way
est la configuration de qualité utilisée par le système par défaut. Vous pouvez voir qu'il existe 111 règles.
Configuration de qualité personnalisée
Si la valeur par défaut du système ne peut pas répondre aux conditions existantes, cliquez sur le bouton 创建
dans le coin supérieur droit
Vous pouvez créer une nouvelle configuration basée sur une configuration de qualité existante ou créer une configuration vide.
- Les nouvelles configurations peuvent attribuer des autorisations à des groupes ou des individus
- Vous pouvez attribuer la configuration actuelle à un projet spécifique et utiliser cette configuration pour la détection de code
- Ajouter plus de règles
De plus, il existe d'autres configurations de base
seuil de qualité
Le seuil de qualité est équivalent à un seuil de détection de code. Si un problème de code dépasse le seuil, une invite apparaîtra ou une notification par e-mail sera envoyée.
Seuil de qualité par défaut Sonar Way
, si un projet ne précise pas de seuil de qualité, ce seuil de qualité sera utilisé par défaut.
Différents seuils de qualité peuvent être créés en fonction de différents projets
- Ajouter différents indicateurs en fonction d'exigences spécifiques
- Sélectionnez les éléments applicables
Vous pouvez voir bugs
que la valeur seuil est définie sur 10 et le code détecte 92. À ce stade, l'état du projet est 错误级别
( aucun dépassement du seuil n'est a>正常
)
Notification par courrier électronique
SonarQube peut être configuré pour vous rappeler par e-mail lorsque certains événements se produisent.
Activer le service de messagerie SMTP
Démarrez le service dans la boîte aux lettres QQ
- Activer le service IMAP/SMTP
- Générer un code d'autorisation
Configuration de la boîte aux lettres SonarQube
Vous pouvez utiliser un compte autorisé à modifier les configurations ou un compte administrateur pour configurer les informations de courrier électronique.
Configuration des notifications par e-mail SonarQube
Vous pouvez sélectionner les notifications que vous souhaitez activer sur 我的账号 -> 提醒
Lorsque de nouvelles questions sont attribuées, des rappels par e-mail seront envoyés
Vous pouvez voir une connexion problématique sous l'e-mail. Le nom de domaine du préfixe de saut peut être configuré dans 配置
Envoyer un e-mail après la configuration
analyse de branche
La version SonarQube Community ne prend pas en charge l'analyse multi-branches, vous pouvez donc utiliser le sonarqube-community-branch-plugin plug-in de github< /span>
Sélectionnez la version du plugin en fonction de la version de SonarQube
-
Téléchargez le package jar approprié et placez-le dans le répertoire où vous avez installé SonarQube
sonarqube/extensions/plugins
-
Redémarrez le service SonarQube Service
-
Changez la branche dont vous avez besoin pour analyser et modifier le fichier sonar-project.properties sous le projet numérisé
sonar.projectKey=test # --- optional properties --- # defaults to project key sonar.projectName=test # defaults to 'not provided' sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Defaults to . sonar.sources=./app,./config # Encoding of the source code. Default is default system encoding sonar.sourceEncoding=UTF-8 #这个具体作用目前不太清除,官网也没写 sonar.java.binaries=. # SonarQube 创建项目生成的令牌 sonar.login=7eee3f6b73b5cab929c30f5bca7bc0a8bf84ec25 # 项目所处分支(一般和 jenkins 结合,通过变量动态修改分支名) sonar.branch.name=release-1
-
sonar-scanner
Nouvelle analyse -
Vous pouvez voir les informations sur la nouvelle succursale sur la
SonarQube Web
page
plusieurs succursales
Les branches de SonarQube peuvent être divisées en
- Branche principale : généralement master
- Branche à court terme : par rapport à la branche à long terme, le problème de la branche à court terme réside dans les
增量
données - Branches à long terme : branches de maintenance à long terme, telles que les branches de publication et de développement, le stockage des données problématiques
单独
Si la branche principale n'est pas master, vous pouvez modifier le nom de la branche principale.
Vous pouvez également modifier les règles de correspondance de branche de 长期分支
Jenkins utilise SonarQube
Installez Jenkins sur Baidu par vous-même
Anso SonarQube Scanner
Rapport
Manage Jenkins -> Manage Plugins -> Sonarqube Scanner
Redémarrez Jenkins après l'installation
Configuration SonarQube servers
Manage Jenkins -> Configure System -> SonarQube servers
Remplissez votre adresse Web SonarQube et créez un 凭证
Informations d'identification ajoutées
-
SonarQube Web génère un jeton en utilisant le compte administrateur
我的账户 -> 安全
-
Ajouter des informations d'identification dans Jenkins
Configuration SonarQube Scanner
Manage Jenkins -> Global Tool Configuration -> SonarQube Scanner
Créer un projet Jenkins
-
Créer un nouvel article
Choisissez un type de style libre à créer -
Créer des informations de build
sonar.projectKey=${JOB_BASE_NAME} sonar.projectName=${JOB_BASE_NAME} sonar.projectVersion=1.0 sonar.sources=./app sonar.sourceEncoding=UTF-8 sonar.java.binaries=. sonar.branch.name=${Branch}
Supprimer l'espace de travail après la création. Ce cas effectue uniquement la détection de code sans opérations ultérieures, vous pouvez donc choisir de supprimer l'espace de travail.
Exécuter le projet
Si c'est la première fois que vous l'exécutez, assurez-vous de sélectionner la branche master
, sinon cela échouera, car la première branche par défaut de SonarQube Web est master
référence
www.cnblogs.com/ycyzharry/p/116890...
www.cnblogs.com/wangxu01/articles/...
Réimprimé de :Installation et utilisation de SonarQube | Forum sur l'exploitation et la maintenance du serveur