El escaneo de código estático es una forma de detectar el código de proyecto. Puede escanear el código sin ejecutar el código. Puede escanear errores de código (como punteros nulos), vulnerabilidades, malas malas (como demasiadas líneas de código en el método), etc. Además, puede detectar la tasa de repetición, la tasa de comentarios, las líneas de comentarios, el número de líneas de código, la complejidad y otra información en el almacén. El escaneo de código estático se puede ejecutar antes de que el código se conecte, y tiene las características del bajo costo de ejecución, y se usa ampliamente en las tuberías de CI.
Sonarqube es un servicio de escaneo de código estático, https://www.sonarqube.org/, que admite escaneo de código en idiomas principales. Su versión comunitaria es de código abierto en GitHub, dirección: https://github.com/sonarsource/sonarqube. Sin embargo, para algunos idiomas, la versión comunitaria no lo admite, como Objective-C y Swift. Lo que este repositorio espera resolver es el análisis de escaneo de código estático de estos dos idiomas.
Como un servicio de escaneo de código maduro, Sonarqube proporciona funciones de complemento al mundo exterior, lo que respalda la importación de herramientas de escaneo de terceros en Sonarqube para su visualización. Este repositorio se basa en el desarrollo secundario de https://github.com/idean/sonar-swift. Ha agregado la importación de resultados de escaneo de Facebook Infer en función de las funciones originales.
Este repositorio es un complemento de escaneo de código iOS para Sonarqube. Admite idiomas Objective-C y Swift, y admite la importación de resultados de exploración y análisis de herramientas Swiftlint, Infer, Oclint, Lizard y FauxPas.



Requisitos mínimos para Sonarqube 7.9 después de la versión 1.6
Invitamos a otros colegas a revisar las reglas de inferencia existentes dentro de la empresa y filtrar algunas reglas para escanear para su referencia.
Infer es una herramienta de escaneo de código estático lanzada por Facebook, que admite escaneo en lenguaje C/C ++/Java/Objective-C.
Enlace: https://github.com/facebook/infer
Swiftlint es una herramienta de análisis de código estático que verifica el estilo y las regulaciones del código Swift. Básicamente, según la guía de estilo de código Swift de GitHub, los problemas informados son compatibles con XCode y pueden generar un archivo de informe. Leeremos el archivo de informe generado y lo subiremos a Sonarqube.
Enlace: https://github.com/realm/swiftlint
Lizard puede analizar la complejidad del círculo del lenguaje Objective-C, generar un archivo XML e importarlo a los resultados de Sonarqube.
Enlace: https://github.com/terryyin/lizard
Oclint es una herramienta de análisis de código estático para el lenguaje C/C ++/Objective-C. A diferencia de Infer, prefiere escanear problemas como las especificaciones del código, por lo que clasificamos los problemas en la parte de oclint en坏味道.
Enlace: https://github.com/oclint/oclint
Faux PAS es un software comercial que admite escaneo y análisis del lenguaje Objective-C.
Enlace: http://fauxpasapp.com/
https://github.com/tal-tech/sonar-swift/releases
Coloque el archivo JAR en extensions/plugins/ Of Sonarqube, y luego reinicie Sonarqube
Consulte el siguiente script para usar
xcodebuild y los registros de salida al archivoxcodebuild 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.xmlDebe ejecutarse en el sistema operativo MacOS mientras escanea.
Puede ingresar al grupo WeChat escaneando el código
Los usuarios pueden registrar el nombre de su empresa en el n. ° 9 (solo para referencia del usuario)