静的コードスキャンは、プロジェクトコードを検出する方法です。コードを実行せずにコードをスキャンできます。コードバグ(ヌルポインターなど)、脆弱性、悪い味(メソッドのコードの行が多すぎるなど)などをスキャンすることができます。さらに、倉庫の繰り返し率、コメント率、コメント行、コードの行、複雑さ、その他の情報を検出できます。静的コードスキャンは、コードがオンラインになる前に実行することができ、実行コストの低い特性があり、CIパイプラインで広く使用されています。
Sonarqubeは、静的なコードスキャンサービスhttps://www.sonarqube.org/であり、主流の言語でのコードスキャンをサポートしています。そのコミュニティバージョンは、githubのオープンソース、アドレス:https://github.com/sonarsource/sonarqubeです。ただし、一部の言語では、Objective-CやSwiftなどのコミュニティバージョンはサポートしていません。このリポジトリが解決したいのは、これら2つの言語の静的コードスキャン分析です。
成熟したコードスキャンサービスとして、Sonarqubeは外の世界にプラグイン機能を提供し、サードパーティスキャンツールのインポートをSonarqubeに展示するためにサポートします。このリポジトリは、https://github.com/idean/sonar-swiftの二次開発に基づいています。元の機能に基づいて、Facebookの推論スキャン結果のインポートを追加しました。
このリポジトリは、Sonarqube用のiOSコードスキャンプラグインです。 Objective-CおよびSwift言語をサポートし、Swiftlint、推測、Oclint、トカゲ、およびFauxpasツールのスキャンおよび分析結果のインポートをサポートします。



バージョン1.6後のSonarqube 7.9の最小要件
他の同僚に招待して、会社内の既存の推測ルールを確認し、参照のためにスキャンするためのいくつかのルールをフィルタリングしました。
推測は、Facebookが起動する静的コードスキャンツールで、C/C ++/Java/Objective-C言語でのスキャンをサポートしています。
リンク:https://github.com/facebook/infer
Swiftlintは、Swiftコードスタイルと規制をチェックする静的コード分析ツールです。基本的に、GithubのSwift Code Style Guideに基づいて、報告された問題はXcodeでサポートされており、レポートファイルを生成できます。生成されたレポートファイルを読み取り、Sonarqubeにアップロードします。
リンク:https://github.com/realm/swiftlint
トカゲは、Objective-C言語の円の複雑さを分析し、XMLファイルを生成し、Sonarqubeの結果にインポートできます。
リンク:https://github.com/terryyin/lizard
OClintは、C/C ++/Objective-C言語の静的コード分析ツールです。推測とは異なり、コード仕様などの問題をスキャンすることを好むため、OCLINT部分の問題を坏味道に分類します。
リンク:https://github.com/oclint/oclint
Faux PASは、Objective-C言語のスキャンと分析をサポートする商用ソフトウェアです。
リンク:http://fauxpasapp.com/
https://github.com/tal-tech/sonar-swift/releases
JARファイルをSonarqubeインストールディレクトリのextensions/plugins/ディレクトリに配置し、Sonarqubeを再起動します
使用する次のスクリプトを参照してください
xcodebuildと出力ログをファイルに実行しますxcodebuild 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.xmlスキャン中にMacOSオペレーティングシステムで実行する必要があります。
コードをスキャンして、WeChatグループに入ることができます
ユーザーは#9で会社名を登録できます(ユーザーリファレンスのみ)