美文网首页自动化测试/CI测试扩展眼界iOS开发
基于Sonar的iOS代码质量检测系统

基于Sonar的iOS代码质量检测系统

作者: WillkYang | 来源:发表于2017-01-15 04:29 被阅读3325次

    先瞄一眼成果~


    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

    相关文章

      网友评论

      • pFruHMXB:作者你好,
        不知道你有没有发现问题,显示全 A,
        但是 OCLint 你导出 html 格式可以看到很多的警告和语法优化,但是在 Sonar 中是看不到的,因为 Sonar 是去检查的你 xml ,xml 没有语法错误,所以给你显示全 A 了,
        码农翻身记:@Cyandnow :+1: 太赞了,等待你发出来,我学习下,困扰了好多天了
        pFruHMXB:@siutony @siutony 解决了,中午我写一个完整的
        码农翻身记:我也碰到同样的问题,请问你解决了吗
      • 十一岁的加重:完成后配置bin环境变量PATH~,这一步求解
        岁月无痕2046:@十一岁的加重 我也搞不定 烦死了 😓
        十一岁的加重:@长空2046 研究Sonar快两个月了,一直没搞好,都不想弄了,太复杂了
        岁月无痕2046:同问 我也不知道 这一步 是什么意思
      • Jabir_Zhang:shell脚本里面最后sonar-runner后面需要加上空格-X
      • 十一岁的加重:照着做的时候有问题,不知道作者还在吗
      • 62b9b63e1d3b:麻烦问下,OCLint检测后结果导入sonarqube展示,其中只显示坏味道,但是bugs的显示一直是0 ,这个科学吗?作者有遇到这种情况没
        岁月无痕2046:我的也是 一个bug 也没有显示
        62b9b63e1d3b:@WillkYang 3Q:smile:
        WillkYang:@梧桐梦 确实是这样,bugs是不会检测出来的。
      • 湖底观景:我是用手动生成的方式做的,首先生成了compile_commands.json(有内容),但是在生成生成oclint.xml是报错了,请问这个怎么解
        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.
        pFruHMXB:你这还是说找不到 "compile_commands.json" 这个文件啊
      • 白水岂能度日:你好,xcode8的配置,在sonar-project.properties文件中你有没有配置sonar.objectivec.codesign和sonar.objectivec.profilename?怎么配置的,我现在卡在这一步了,如果知道的话,请告知,谢谢
      • advancer_chen:补充一点: 在xcodebuild build 环节要加入-destination 'platform=iOS Simulator,name=iPhone 6' 设置, 否则.json没有内容.
        WillkYang:谢谢补充😁😁😁
      • heaven_touch:研究过,用处不是特别大,就是将 IDE 的警告、错误收集下展示
        pFruHMXB:对于做 Code Review 来说还是很不错的.
      • 煜寒了:厉害了,前段时间准备也写个,后来发现网上很多,就放印象笔记了~ 啊哈哈
        WillkYang:@StevenC 请使用方法一安装~:joy:
        StevenC:brew install sonar-runner
        这一步失败了。请问如何解决?
        Error: No available formula with the name "sonar-runner"
        WillkYang:@煜寒了 哈哈哈,我也是写在笔记上,后来有人问就整理出来了:smile:

      本文标题:基于Sonar的iOS代码质量检测系统

      本文链接:https://www.haomeiwen.com/subject/jdsybttx.html