La numérisation du code statique est un moyen de détecter le code du projet. Il peut scanner le code sans exécuter le code. Il peut scanner des bogues de code (tels que les pointeurs nuls), des vulnérabilités, un mauvais goût (comme trop de lignes de code dans la méthode), etc. En outre, il peut détecter le taux de répétition, le taux de commentaires, les lignes de commentaire, le nombre de lignes de code, la complexité et d'autres informations dans l'entrepôt. La numérisation du code statique peut être exécutée avant la mise en ligne du code et a les caractéristiques du faible coût d'exécution et est largement utilisée dans les pipelines CI.
Sonarqube est un service de numérisation de code statique, https://www.sonarqube.org/, qui prend en charge la numérisation de code dans les langues grand public. Sa version communautaire est open source sur github, adresse: https://github.com/sonarsource/sonarqube. Cependant, pour certaines langues, la version communautaire ne le prend pas en charge, comme Objective-C et Swift. Ce que ce référentiel espère résoudre, c'est l'analyse de balayage de code statique de ces deux langues.
En tant que service de numérisation de code mature, Sonarqube fournit des fonctions de plug-in vers le monde extérieur, prenant en charge l'importation d'outils de numérisation tiers dans Sonarqube pour l'affichage. Ce référentiel est basé sur le développement secondaire de https://github.com/idean/sonar-swift. Il a ajouté l'importation de résultats de balayage inférieur de Facebook en fonction des fonctions d'origine.
Ce référentiel est un plug-in de balayage de code iOS pour SonarQube. Il prend en charge les langages objectif-C et Swift, et prend en charge l'importation des résultats de la numérisation et de l'analyse des outils Swiftlint, Infer, Oclint, Lizard et Fauxpas.



Exigences minimales pour sonarqube 7.9 après la version 1.6
Nous avons invité d'autres collègues à examiner les règles d'inférences existantes au sein de l'entreprise et a filtré certaines règles pour scanner votre référence.
L'inférence est un outil de balayage de code statique lancé par Facebook, qui prend en charge la numérisation dans le langage C / C ++ / Java / Objective-C.
Lien: https://github.com/facebook/infer
Swiftlint est un outil d'analyse de code statique qui vérifie le style et les réglementations de code Swift. Fondamentalement, sur la base du guide de style de code Swift de GitHub, les problèmes rapportés sont pris en charge sur Xcode et peuvent générer un fichier de rapport. Nous lirons le fichier de rapport généré et le téléchargerons sur SonarQube.
Lien: https://github.com/realm/swiftlint
Lizard peut analyser la complexité du cercle du langage Objective-C, générer un fichier XML et l'importer dans les résultats de Sonarqube.
Lien: https://github.com/terryyin/lizard
OCLINT est un outil d'analyse de code statique pour le langage C / C ++ / Objective-C. Contrairement à l'inférence, il préfère scanner des problèmes tels que les spécifications du code, nous classons donc les problèmes de la partie OCLINT en坏味道.
Lien: https://github.com/oclint/oclint
Faux PAS est un logiciel commercial qui prend en charge la numérisation et l'analyse du langage objectif-C.
Lien: http://fauxpasapp.com/
https://github.com/tal-tech/sonar-swift/releases
Placez le fichier JAR dans extensions/plugins/ répertoire du répertoire d'installation de Sonarqube, puis redémarrez Sonarqube
Reportez-vous au script suivant à utiliser
xcodebuild et de sortie dans le fichierxcodebuild clean build -workspace app.xcworkspace -scheme scheme -destination ' generic/platform=iOS ' COMPILER_INDEX_STORE_ENABLE=NO | tee xcodebuild.log > /dev/null
xcpretty -r json-compilation-database -o compile_commands.json < xcodebuild.log > /dev/null
# --skip-analysis-in-path 是忽略扫描目录
infer run --skip-analysis-in-path Pods --compilation-database compile_commands.json
# 可选,如果有 swift 语言使用
# swiftlint lint > swiftlint.txt
# 可选,Java 语言
# infer run -- ./gradlew build
# 在命令后添加 -Dsonar.java.infer.report=infer-out/report.json
# 可选,如果想计算 复杂度 使用
# lizard --xml > lizard-report.xml
# 在命令后添加 -Dsonar.swift.lizard.report=lizard-report.xml
sonar-scanner -Dsonar.host.url=http://sonarqube -Dsonar.projectKey=app -Dsonar.sources=. -Dsonar.swift.swiftlint.report=swiftlint.txt -Dsonar.swift.infer.report=infer-out/report.json
# oclint example
-Dsonar.swift.oclint.report=oclint_report.xmlIl doit s'exécuter sur le système d'exploitation MacOS lors de la numérisation.
Vous pouvez saisir le groupe WeChat en scannant le code
Les utilisateurs sont invités à enregistrer le nom de leur entreprise dans le n ° 9 (pour référence des utilisateurs uniquement)