Pemindaian kode statis adalah cara untuk mendeteksi kode proyek. Ini dapat memindai kode tanpa menjalankan kode. Ini dapat memindai bug kode (seperti nol pointer), kerentanan, rasa buruk (seperti terlalu banyak baris kode dalam metode ini), dll. Selain itu, dapat mendeteksi tingkat pengulangan, tingkat komentar, baris komentar, jumlah baris kode, kompleksitas dan informasi lain di gudang. Pemindaian kode statis dapat dieksekusi sebelum kode online, dan memiliki karakteristik biaya eksekusi yang rendah, dan banyak digunakan dalam jaringan pipa CI.
Sonarqube adalah layanan pemindaian kode statis, https://www.sonarqube.org/, yang mendukung pemindaian kode dalam bahasa arus utama. Versi komunitasnya adalah open source di Github, alamat: https://github.com/sonarsource/sonarquce. Namun, untuk beberapa bahasa, versi komunitas tidak mendukungnya, seperti Objective-C dan Swift. Apa yang diharapkan oleh repositori ini adalah analisis pemindaian kode statis dari kedua bahasa ini.
Sebagai layanan pemindaian kode yang matang, Sonarqube menyediakan fungsi plug-in ke dunia luar, mendukung impor alat pemindaian pihak ketiga ke Sonarqube untuk ditampilkan. Repositori ini didasarkan pada pengembangan sekunder https://github.com/idean/sonar-swift. Ini telah menambahkan impor hasil pemindaian Facebook Infer berdasarkan fungsi asli.
Repositori ini adalah plug-in pemindaian kode iOS untuk Sonarquce. Ini mendukung bahasa Objective-C dan Swift, dan mendukung pengimpuhan pemindaian dan hasil analisis dari alat SwiftLint, Infer, Oclint, Lizard, dan Fauxpas.



Persyaratan Minimum untuk Sonarqube 7.9 Setelah Versi 1.6
Kami mengundang kolega lain untuk meninjau aturan infer yang ada di dalam perusahaan dan menyaring beberapa aturan untuk pemindaian untuk referensi Anda.
Infer adalah alat pemindaian kode statis yang diluncurkan oleh Facebook, yang mendukung pemindaian dalam bahasa C/C ++/Java/Objective-C.
Tautan: https://github.com/facebook/infer
SwiftLint adalah alat analisis kode statis yang memeriksa gaya dan regulasi kode Swift. Pada dasarnya berdasarkan panduan gaya kode Swift GitHub, masalah yang dilaporkan didukung pada XCODE dan dapat menghasilkan file laporan. Kami akan membaca file laporan yang dihasilkan dan mengunggahnya ke Sonarqube.
Tautan: https://github.com/realm/swiftlint
Kadal dapat menganalisis kompleksitas lingkaran bahasa Objective-C, menghasilkan file XML, dan mengimpornya ke hasil Sonarqube.
Tautan: https://github.com/terryyin/lizard
Oclint adalah alat analisis kode statis untuk bahasa C/C ++/Objective-C. Tidak seperti Infer, lebih suka memindai masalah seperti spesifikasi kode, jadi kami mengklasifikasikan masalah dalam bagian oclint menjadi坏味道.
Tautan: https://github.com/oclint/oclint
Faux PAS adalah perangkat lunak komersial yang mendukung pemindaian dan analisis bahasa Objective-C.
Tautan: http://fauxpasapp.com/
https://github.com/tal-tech/sonar-swift/releases
Tempatkan file JAR di extensions/plugins/ direktori direktori instalasi Sonarqube, dan kemudian restart Sonarquce
Lihat skrip berikut untuk digunakan
xcodebuild dan output log ke filexcodebuild 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.xmlItu harus berjalan pada sistem operasi macOS saat memindai.
Anda dapat memasukkan grup WeChat dengan memindai kode
Pengguna dipersilakan untuk mendaftarkan nama perusahaan mereka di #9 (hanya untuk referensi pengguna)