Das Scannen des statischen Codes ist eine Möglichkeit, den Projektcode zu erkennen. Es kann den Code scannen, ohne den Code auszuführen. Es können Codefehler (z. B. Null -Zeiger), Schwachstellen, einen schlechten Geschmack (wie zu viele Codezeilen in der Methode) usw. scannen. Darüber hinaus kann es die Wiederholungsrate, die Kommentarrate, die Kommentarzeilen, die Anzahl der Code, Komplexität und andere Informationen im Lagerhaus erkennen. Das Scannen des statischen Codes kann vor dem Online -Code ausgeführt werden und hat die Eigenschaften niedriger Ausführungskosten und wird in CI -Pipelines häufig verwendet.
Sonarqube ist ein statischer Code -Scan -Service, https://www.sonarqube.org/, der das Scannen in Mainstream -Sprachen unterstützt. Die Community -Version ist Open Source auf Github, Adresse: https://github.com/sonarsource/sonarqube. Für einige Sprachen unterstützt die Community-Version sie jedoch nicht wie Objective-C und Swift. Was dieses Repository zu lösen hofft, ist die statische Code -Scan -Analyse dieser beiden Sprachen.
Als reifer Code-Scan-Service bietet Sonarqube Plug-in-Funktionen für die Außenwelt und unterstützt den Import von Scan-Tools von Drittanbietern in Sonarqube zur Anzeige. Dieses Repository basiert auf der sekundären Entwicklung von https://github.com/idean/sonar-swift. Der Import von Facebook -Infer -Scan -Ergebnissen basierend auf den ursprünglichen Funktionen.
Dieses Repository ist ein iOS-Code-Scan-Plug-In für Sonarqube. Es unterstützt objektive C- und Swift-Sprachen und unterstützt das Import von Scan- und Analyseergebnissen von SwiftLint-, Infer-, Ocint-, Eidechsen- und FauxPAS-Tools.



Mindestanforderungen für Sonarqube 7.9 nach Version 1.6
Wir haben andere Kollegen eingeladen, die vorhandenen Abschlussregeln innerhalb des Unternehmens zu überprüfen und einige Regeln für das Scannen für Ihre Referenz herauszufiltern.
Infer ist ein von Facebook gestarteter statischer Code-Scan-Tool, das das Scannen in der C/C ++/Java/Objective-C-Sprache unterstützt.
Link: https://github.com/facebook/infer
SwiftLint ist ein statisches Tool für Codeanalyse, das den Swift -Code -Stil und die Swift -Code -Vorschriften überprüft. Grundsätzlich basiert auf dem Swift -Code -Style -Handbuch des Githubs, die gemeldeten Probleme werden auf Xcode unterstützt und können eine Berichtsdatei generieren. Wir werden die generierte Berichtsdatei lesen und sie auf Sonarqube hochladen.
Link: https://github.com/realm/swiftlint
Eidechse kann die Kreiskomplexität der objektiv-C-Sprache analysieren, eine XML-Datei generieren und in die Ergebnisse von Sonarqube importieren.
Link: https://github.com/terryyin/lizard
Oclint ist ein statisches Tool für die Codeanalyse für die Sprache C/C ++/Objective-C. Im Gegensatz zu inferen ist es vorgezogen, Probleme wie Codespezifikationen zu scannen, sodass wir die Probleme im OClint -Teil in坏味道einteilen.
Link: https://github.com/oclint/oclint
Faux PAS ist eine kommerzielle Software, die das Scannen und Analysen der Objektiv-C-Sprache unterstützt.
Link: http://fauxpasapp.com/
https://github.com/tal-tech/sonar-swift/releases
Platzieren Sie die JAR -Datei in extensions/plugins/ Verzeichnisse des Sonarqube -Installationsverzeichnisses und starten Sie dann Sonarqube neu
Siehe das folgende Skript, um sie zu verwenden
xcodebuild und Ausgabeprotokolle in Datei ausxcodebuild 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.xmlEs muss im MacOS -Betriebssystem beim Scannen ausgeführt werden.
Sie können die WeChat -Gruppe eingeben, indem Sie den Code scannen
Benutzer sind herzlich eingeladen, ihren Firmennamen in #9 zu registrieren (nur als Benutzerreferenz)