https://github.com/yonyong/sonar-custom-pmd-plugin
由于目前自定义sonar插件开发没有统一的框架,实现比较复杂, 因此开发了此骨架项目。开发者可以按照文档步骤新增自定义的sonar插件。
https://github.com/yonyong/sonar-custom-pmd-plugin
custom-plugin java p3c pmd sonar-plugin sonarqube sonarqube-plugin static-analyzer static-code-analysis
Last synced: 28 days ago
JSON representation
由于目前自定义sonar插件开发没有统一的框架,实现比较复杂, 因此开发了此骨架项目。开发者可以按照文档步骤新增自定义的sonar插件。
- Host: GitHub
- URL: https://github.com/yonyong/sonar-custom-pmd-plugin
- Owner: yonyong
- License: lgpl-3.0
- Created: 2022-11-13T07:40:02.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-11-15T12:50:01.000Z (over 2 years ago)
- Last Synced: 2025-04-01T16:05:40.439Z (about 2 months ago)
- Topics: custom-plugin, java, p3c, pmd, sonar-plugin, sonarqube, sonarqube-plugin, static-analyzer, static-code-analysis
- Language: Java
- Homepage: https://github.com/yonyong/sonar-custom-pmd-plugin
- Size: 342 KB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
*_[EN](https://github.com/yonyong/sonar-custom-pmd-plugin/blob/master/README_EN.md) | 中文_*
# 前言
## - 项目
自定义sonarPMD插件-骨架
## - 介绍
目前sonar基于各版本的自定义PMD插件兼容性不太理想。
因此,针对7.9版本sonar实现了一个自定义sonarPMD插件的骨架项目。
主要基于下面两个项目进行源码修改:
https://github.com/alibaba/p3c/tree/master/p3c-pmd
https://github.com/jborgers/sonar-pmd/tree/master
## - 适用版本
sonar版本7.9
## - 模块介绍
integration-test 集成测试模块
sonar-pmd-custom-rules 自定义规则模块
sonar-pmd-plugin 生成sonar插件模块
## - 其他
sonar-pmd-custom-rules模块负责自定义sonar规则,规则编写验证完毕后,install到本地仓。
sonar-pmd-plugin模块负责集成sonar-pmd-custom-rules模块,打包生成sonar插件。如果不需要额外定义规则集,从[2.开发一个自定义规则](#idname)开始即可。
# 1. 自定义规则集
```$xslt
模块: sonar-pmd-custom-rules1. 在/resources/rulesets/java下的ali-set.xml后面新增一个文件 custom.xm
2. 修改pom文件,添加规则集:rulesets/java/custom.xml
3. 修改pom文件,在插件中添加依赖, 代码片段如下:
com.alibaba.p3c
p3c-pmd
2.0.1
top.yonyong
sonar-pmd-custom-rules
1.0.0
4. 修改pom文件,注释掉gpg插件
5. 执行maven命令: clean install 规则集添加完成。
```
# 2.开发一个自定义规则```$xslt
模块: sonar-pmd-custom-rules1. 添加一个自定义规则,例如:top.yonyong.sonar.pmd.lang.java.rule.custom.MyFirstTestRule
2. 在 src\main\resources\messages.xml 和 messages_en.xml文件中,新增规则校验失败后报告的信息
3. 在src\main\resources\rulesets\java\custom.xml中注册自定义的规则
```
# 3.测试你的规则```$xslt
模块: sonar-pmd-custom-rules1. 在 test/src/java/下添加一个测试类,例如:top.yonyong.sonar.pmd.lang.java.rule.custom.MyFirstTestRuleTest
2. 添加一个测试对象xml:src\test\resources\top\yonyong\sonar\pmd\lang\java\rule\custom\xml\MyFirstTestRule.xml
3. 在上一步的测试xml中,编写测试用例、预期结果
4. 执行测试
```
# 4.在sonar中导入你的规则```$xslt
模块: sonar-pmd-custom-rules
1. 执行maven命令: mvn clean insall模块: sonar-pmd-plugin
2. 在 src\main\resources\org\sonar\plugins\pmd\rules-custom.xml中添加自定义的规则
3. 在src\main\resources\org\sonar\l10n\pmd.properties中注册规则名称
4. 执行maven命令: mvn clean package
5. 将打包出来的jar包上传至sonar插件目录下(extensions/plugins/)
6. 重启sonar
```