先瞄一眼成果~
1.JDK,DBMS(演示环境使用Mysql)
2.创建sonar数据库和用户
mysql -u root -pCREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
3.下载sonar 演示环境使用v6.1,下载后解压到
/usr/local/sonar/
4.安装sonar-runner
下载sonar-runner:演示环境使用v2.4,下载后解压到
/usr/local/sonar-runner/
完成后配置bin环境变量PATH~
编辑 ~/.bash_profile文件,在文件头部添加一行
# 注意这个路径是sonar-runner的安装路径
export PATH=$PATH:/usr/local/sonar-runner/bin
5.安装完成sonar、sonar-runner后进行数据配置
sonar配置:sonar.properties配置文件/usr/local/sonar/conf/sonar.properties
配置数据库登陆账号密码
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar-runner配置:sonar-runner.properties配置文件/usr/local/sonar-runner/conf/sonar-runner.properties。
sonar.host.url=http://localhost:9000
#----- MySQL
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
#----- Global database settings
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
#----- Security (when 'sonar.forceAuthentication' is set to 'true')
sonar.login=admin
sonar.password=admin
5.1在/usr/local/sonar/bin/macosx-universal-64/下执行:
sudo ./sonar.sh start 启动sonar。在浏览器打开localhost:9000查看是否启动
6.sonar默认没有安装oc的插件,需要手动下载:sonar-objective-c-plugin-0.5.0-SNAPSHOT.jar 引用下载地址
放置在/usr/local/sonar/extensions/plugins/目录下。重启sonar会自动加载。
sudo ./sonar.sh stop
sudo ./sonar.sh start
7.使用Homebrew来安装xctool、oclint、gcovr。
brew install xctool
brew tap oclint/formulae
brew install oclint
brew install gcovr
8.在待测试项目与*.xocdeproj同级目录下新建文本sonar-project.properties配置待测试项目信息。引用下载地址
配置结构如下:
9.在此工作目录下运行隔壁老王写的兼容xcode8的脚本:https://github.com/ChenTF/iOS-sonarShell/blob/master/run-sonar_V2.sh
PS:运行该脚本无效的可尝试参考11的思路手动运行
10.完成。打开localhost:9000查看结果,然后开始修bug吧~~附图:
11.补充:手动执行代码质量检测过程
11.1.生成compile_commands.json文件。命令:
xcodebuild -workspace TRB.xcworkspace -scheme TRB -sdk iphonesimulator build | tee xcodebuild.log | xcpretty -r json-compilation-database --output compile_commands.json
11.2生成oclint.xml。命令:
oclint-json-compilation-database -- -max-priority-1 10000 -max-priority-2 10000 -max-priority-3 10000 -rc LONG_LINE=150 -report-type pmd -o oclint.xml
11.3执行sonar-runner。
注意在sonar-project.properties配置文件中,需要配置oclint.xml文件路径。
sonar.objectivec.oclint.reportPath=oclint.xml
执行命令:
sonar-runner //若提示没找到命令的检查PATH的设置
11.4完成。打开localhost:9000查看结果。~~
补充:
如果需要,可下载sonar中文插件,放到/usr/local/sonar/extensions/plugins/下,重启sonar即可。
注意下载的语言包需要和sonar版本号对应,例如演示环境sonar为v6.1,故下载v1.13语言包。
对应关系请参照下载地址
参考链接:
Sonar XCode8兼容
欢迎加群讨论其它~:578874451
网友评论
不知道你有没有发现问题,显示全 A,
但是 OCLint 你导出 html 格式可以看到很多的警告和语法优化,但是在 Sonar 中是看不到的,因为 Sonar 是去检查的你 xml ,xml 没有语法错误,所以给你显示全 A 了,
Error while trying to load a compilation database:
Could not auto-detect compilation database for file "/Users/zhangjian/Library/Developer/Xcode/DerivedData/Erefuel-gtcsgpnrdjdryhfkhrjjzhqqkswq/Build/Intermediates/Erefuel.build/Debug-iphonesimulator/Erefuel.build/DerivedSources/yijiayou.m"
No compilation database found in /Users/zhangjian/Library/Developer/Xcode/DerivedData/Erefuel-gtcsgpnrdjdryhfkhrjjzhqqkswq/Build/Intermediates/Erefuel.build/Debug-iphonesimulator/Erefuel.build/DerivedSources or any parent directory
json-compilation-database: Error while opening JSON database: No such file or directory
Running without flags.
这一步失败了。请问如何解决?
Error: No available formula with the name "sonar-runner"