A varredura de código estático é uma maneira de detectar o código do projeto. Ele pode escanear o código sem executar o código. Ele pode digitalizar bugs de código (como indicadores nulos), vulnerabilidades, mau gosto (como muitas linhas de código no método) etc. Além disso, pode detectar a taxa de repetição, taxa de comentários, linhas de comentários, número de linhas de código, complexidade e outras informações no armazém. A varredura de código estática pode ser executada antes que o código fique on -line e tenha as características do baixo custo de execução e seja amplamente utilizado em pipelines de IC.
Sonarqube é um serviço de digitalização de código estático, https://www.sonarqube.org/, que suporta a digitalização de código nos idiomas convencionais. Sua versão comunitária é de código aberto no github, endereço: https://github.com/sonarsource/sonarqube. No entanto, para alguns idiomas, a versão da comunidade não a suporta, como Objective-C e Swift. O que esse repositório espera resolver é a análise de varredura de código estático desses dois idiomas.
Como um serviço de digitalização de código maduro, o Sonarqube fornece funções de plug-in para o mundo exterior, apoiando a importação de ferramentas de varredura de terceiros no Sonarqube para exibição. Este repositório é baseado no desenvolvimento secundário de https://github.com/idean/sonar-swift. Ele adicionou a importação do Facebook inferir os resultados da verificação com base nas funções originais.
Este repositório é um plug-in de digitalização de código iOS para Sonarqube. Ele suporta o Objective-C e o Swift Languages e suporta os resultados da digitalização e da análise das ferramentas Swiftlint, Infer, Oclint, Lizard e Fauxpas.



Requisitos mínimos para Sonarqube 7.9 Após a versão 1.6
Convidamos outros colegas para revisar as regras inferiores existentes dentro da empresa e filtramos algumas regras para digitalização para sua referência.
Infer é uma ferramenta de varredura de código estática lançada pelo Facebook, que suporta a digitalização na linguagem C/C ++/Java/Objective-C.
Link: https://github.com/facebook/infer
O Swiftlint é uma ferramenta de análise de código estático que verifica o estilo e os regulamentos do código SWIFT. Basicamente, com base no guia de estilo de código SWIFT do Github, os problemas relatados são suportados no Xcode e podem gerar um arquivo de relatório. Vamos ler o arquivo de relatório gerado e o carregar para Sonarqube.
Link: https://github.com/realm/swiftlint
O Lizard pode analisar a complexidade do círculo da linguagem Objective-C, gerar um arquivo XML e importá-lo para os resultados do Sonarqube.
Link: https://github.com/terryyin/lizard
OCLINT é uma ferramenta de análise de código estático para o idioma C/C ++/Objective-C. Ao contrário de inferir, ele prefere digitalizar problemas, como especificações de código, por isso classificamos os problemas na parte OCLINT em坏味道.
Link: https://github.com/oclint/oclint
A Faux Pas é um software comercial que suporta a digitalização e a análise da linguagem Objective-C.
Link: http://fauxpasapp.com/
https://github.com/tal-tech/sonar-swift/releases
Coloque o arquivo JAR extensions/plugins/ diretório do diretório de instalação do Sonarqube e reinicie o Sonarqube
Consulte o seguinte script para usar
xcodebuild e de saída no arquivoxcodebuild 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.xmlEle deve ser executado no sistema operacional MacOS durante a digitalização.
Você pode entrar no grupo WeChat, digitalizando o código
Os usuários podem registrar o nome da empresa em #9 (somente para referência do usuário)