1.环境安装不赘述,默认相关依赖包已经安装完成,ios需要的证书配置完成
xcode
xcpreety
oclint
2. 在执行xcodebuild前最好执行下analyze
3. xcodebuild -workspace XXX.xcworkspace -scheme XXX -configuration Debug COMPILER_INDEX_STORE_ENABLE=NO| tee xcodebuild.log| xcpretty -r json-compilation-database --output compile_commands.json
4. oclint-json-compilation-database -e oclint -v oclints_args -- -report-type pmd -o ../sonar-reports/oclint.xml \
-rc CYCLOMATIC_COMPLEXITY=10 \
-rc LONG_CLASS=1000 \
-rc LONG_METHOD=50 \
-rc LONG_LINE=140 \
-rc LONG_VARIABLE_NAME=30 \
-rc SHORT_VARIABLE_NAME=1 \
-rc MAXIMUM_IF_LENGTH=5 \
-rc MINIMUM_CASES_IN_SWITCH=2 \
-rc NCSS_METHOD=30 \
-rc NESTED_BLOCK_DEPTH=5 \
-rc TOO_MANY_METHOD=30 \
-rc TOO_MANY_PARAMETERS=5 \
-max-priority-1=0 \
-max-priority-2=5 \
-max-priority-3=10
5. sonar-reports/oclint.xml 和sonar-project.properties同级目录。我在sonar-project.properties中修改了oclint.xml的路径地址但是没有生效,在执行sonar-scanner时还是会提示找不到sonar-reports/oclint.xml,这样会导致扫描结果没有任何objective-c相关的任何错误
6.sonar-project.properties相关配置信息
sonar.projectKey=XXXX
sonar.projectName=XXXX
sonar.projectVersion=1.1
sonar.sources=./
sonar.language=objectivec,html,python
sonar.host.url=http://ip:9000
sonar.sourceEncoding=UTF-8
sonar.login=XXXX
sonar.objectivec.oclint.report=sonar-reports/oclint.xml
sonar.branch.name=XXXXX
7. 运行sonar-scanner
问题总结
1.oclint.xml路径
2.oclint.xml中&需要换成and,否则在执行sonar-scanner时会报无法识别的错
3.xcodebuild时加上参数COMPILER_INDEX_STORE_ENABLE=NO,是因为我本地装了两个xcode,如果不加上这个参数,在使用oclint解析compile_commands.json时会无法解析成功