command line developer tools、xcpretty、oclint
xcodebuild -workspace DoctorYL.xcworkspace -scheme DoctorYL clean build | tee xcodebuild.log | xcpretty -t -r json-compilation-database -o compile_commands.json
这样就把xcodebuild
的日志格式化成json
格式, 保存在compile_commands.json
文件按中。
oclint-json-compilation-database -e Pods -v -- -report-type pmd -o sonar-reports/oclint.xml
这样就将json格式的数据转换成了xml格式的数据了。
注意:oclint.xml
文件的位置必须是sonar-reports/oclint.xml
, 而且sonar-reports
文件夹必须事先创建好。
对于iOS
工程,在SonarQube
中需要安装sonar-objective-c-plugin
插件。 这个插件只是读取oclint
工具的结果oclint.xml
的。
SonarQube
官方提供的sonar-objective-c-plugin
插件是收费的。
这个插件也有一个开源的,地址是:https://github.com/octo-technology/sonar-objective-c
这个开源的插件虽然能使用,但是很久没有维护了。经过测试SonarQube 4.5.6
可以使用,更高版本不支持。
下载源码:
git clone https://github.com/octo-technology/sonar-objective-c.git
源码工程结构如下:
这是一个Java
编写的工程,我们需要编译他,他是用Maven
管理的, 所以,我们要先安装Maven
并配置好环境变量。
编译:
mvn clean build
将生成的jar包放到sonarqube的plugin目录下:
cp target/sonar-objective-c-plugin-0.4.0.jar ~/bin/sonarqube-5.2/extensions/plugins
重新启动SonarQube
。
sonar-project.properties
的配置如下:
sonar.projectKey=com.unionx.yilingdoctor.ios
sonar.projectName=YiLingDoctor_for_ios
sonar.projectVersion=20160318
sonar.sourceEncoding=UTF-8
sonar.language=objc
sonar.sources=DoctorYL/
sonar.objectivec.project=DoctorYL.xcodeproj
sonar.objectivec.workspace=DoctorYL.xcworkspace
sonar.objectivec.appScheme=DoctorYL