摘要:因为工作需要最近接触到了,需要根据项目自定义和规则,由于国内的资料实在是比较少,并且官网的资料全是英文的,看起来实在是头疼,所以希望写点资料能够帮助到其他人。
基本思路因为工作需要最近接触到了SonarQube,需要根据项目自定义Java和Xml规则,由于国内的资料实在是比较少,并且官网的资料全是英文的,看起来实在是头疼,所以希望写点资料能够帮助到其他人。
官网地址:https://www.sonarqube.org
在此感谢hu_qingen (古月随笔) 和 冯澍雨 提供的帮助
1、下载官方提供的规则插件包
2、根据需求编写规则类
3、编译打包
4、上传自定义规则插件
下载地址:
1、Java自定义规则插件:
https://github.com/SonarSourc...
2、Xml自定义规则插件:
https://sonarsource.bintray.c...
JDK1.8以上
Mavean
Jenkins
目前SonarQube自定义规则支持的方式有两种: 编写java类和编写XPath表达式,这两种方式都是基于AST(Abstract Syntax Tree抽象语法树)语法结构来实现的。
1、Xpath方式
需求:
从Java代码中查找是否存在 while {}这种语法结构
表达式代码:
//WhileStatement[not(Statement/Block)]
步骤:
将表达式代码放入自定义规则插件中的Expression中
这种方式需要借助第三方工具来写表达式,并且要对Xpath语法比较熟练,我觉得并不是很强大,需要花一定的时间学习。
2、Java方式
需求:从Xml文件中查找,元素是否存在“zbc_test”这样的内容
步骤:
① 创建自定义规则类
sonar-xml-plugin/src/main/java/org/sonar/plugins/check
② 根据规则需求编写代码
③ 注册新加入的规则
④ 编写规则描述及等级分类文件,名字要和规则类中的Key相同或者规则类名相同
sonar-xmlplugin/src/main/resources/org/sonar/l10n/xml/rules/xml/DbSchemalCheck.html
sonar-xml-plugin/src/main/resources/org/sonar/l10n/xml/rules/xml/DbSchemalCheck.json
编译打包Eclipse选择要编译打包的项目文件,使用Maven进行编译,如果编译时不需要进行单元测试,可以跳过测试。
编译成功
将编译好的插件上传至指定路径:/sonarqube-6.3/extensions/plugins
重新启动SonarQube,进入菜单Administration—System - Update Center 查看自定义规则插件是否安装成功
查看自定义规则进入SonarQube - Rules 选择XML可以查看刚刚编写的自定义规则:
自定义规则的描述如下:
两种方法,编写单元测试类和手工测试,需要根据规则的复杂程度进行选择。
编写Java单元测试类:
java-custom-rules/src/test/java/org/sonar/samples/java/checks/MyCustomSubscriptionRuleTest.java
编写Xml单元测试类:
sonar-xml-plugin/src/test/java/org/sonar/plugins/xml/checks/IllegalTabCheckTest.java
手工测试:
进入Jenkins,选择要扫描的项目进行构建,构建完成后点击右侧的SonarQube蓝色图标,查看扫描结果
选择左侧的选项,查看所有存在问题的文件和错误规则
点击文件名查看所有扫描出来的错误代码及说明
总结刚开始以为只要写几个表达式,就可以很方便实现复杂的规则,但是摸索了几天查了几天的Google ,才知道还是要下载官方的自定义规则插件,然后用Java编写自己的规则类,饶了一大圈很累。
我还下载了其他的一些SonarQube插件,通过查看代码发现,基本都遵守并实现了官方的Plugin接口
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70121.html
摘要:是一个用于代码质量管理的开源平台。支持,此处以为例。注意,此处必须保证该私钥对应的公钥即必须配置在上,否则会失败配置完成后点击。单元测试利用命令运行虚拟机进行单元测试,然后把输出结果数据生成报告。 摘要: Jenkins Jenkins是一款开源的持续集成工具,它的特点:易于安装、易于配置、可扩展(自己开发插件),并且它拥有数以百计的成熟插件,这种插件式的特点提供可做任何事情的可能。 ...
摘要:是一个用于代码质量管理的开源平台。支持,此处以为例。注意,此处必须保证该私钥对应的公钥即必须配置在上,否则会失败配置完成后点击。单元测试利用命令运行虚拟机进行单元测试,然后把输出结果数据生成报告。 摘要: Jenkins Jenkins是一款开源的持续集成工具,它的特点:易于安装、易于配置、可扩展(自己开发插件),并且它拥有数以百计的成熟插件,这种插件式的特点提供可做任何事情的可能。 ...
摘要:特点开源的代码质量管控平台,我们使用的即为。一个扩展插件,可以安装在与等开发工具中中的使用安装,搜索。连接的主要目的是同步分析规则质量规则与自定义设置。结果同步显示同部分,此部分要求为。 介绍 代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语...
摘要:下面列出了个有助于你开发应用程序最好的工具。官方网站是一个集多功能于一身的故障排除工具。此轻便的工具有着惊人的分析能力。它提供了规则警报阈值排除和设置功能。官方网站以上就是每个程序员需要了解的个开发工具,希望对你有所帮助。 Java是计算机应用程序编程语言,被广泛用于创建Web应用、服务器处理、用户端的API开发乃至数据库等多个领域。下面列出了8个有助于你开发Java应用程序最好的Ja...
阅读 2236·2021-11-15 11:37
阅读 2604·2021-09-23 11:21
阅读 2932·2021-09-07 10:11
阅读 3145·2019-08-30 15:53
阅读 2793·2019-08-29 15:13
阅读 1591·2019-08-26 13:57
阅读 1084·2019-08-26 12:23
阅读 2376·2019-08-26 11:51