SonarJava插件扫描非.xml后缀XML文件的简便方法咨询
简便扫描非.xml后缀XML文件的方法(SonarQube 6.7.2 + Java插件5.2.0.13398)
你完全不用分叉修改XmlFileSensor的源码,有两种更简便的方案可以实现需求,优先推荐第一种配置方式:
方案1:通过SonarQube配置扩展XML文件后缀
SonarQube允许通过配置指定哪些文件被识别为XML语言,这样XmlFileSensor就会自动扫描这些文件,步骤如下:
- 项目级配置:在你的项目根目录的
sonar-project.properties文件中添加以下配置:# 扩展XML文件的匹配模式,包含.otp和.otm后缀 sonar.lang.patterns.xml=**/*.xml,**/*.otp,**/*.otm - 全局配置(适用于所有项目):登录SonarQube后台,进入
Administration > Configuration > General Settings > Languages > XML,找到「File suffixes」选项,在原有.xml的基础上添加,.otp,.otm,保存即可。
这个方法的核心是让SonarQube把.otp和.otm后缀的文件归类为XML语言,而XmlFileSensor本身就是针对所有XML语言的文件进行扫描的,所以不需要修改任何源码。
方案2:编写自定义Sensor(如果配置方案不生效)
如果因为版本限制(比如个别旧版本不支持sonar.lang.patterns.xml配置),可以编写一个轻量的自定义Sensor,复用XmlFileSensor的逻辑来处理目标后缀文件,不需要分叉原插件:
- 创建一个简单的SonarQube插件项目,依赖
sonar-java-plugin和SonarQube的核心API - 实现一个自定义Sensor,在
execute方法中扫描所有.otp和.otm文件,然后调用XmlFileSensor的扫描逻辑(或者直接复用其代码逻辑) - 打包插件并部署到SonarQube服务器的
extensions/plugins目录,重启服务器即可
不过这个方案需要一些插件开发基础,优先推荐方案1,因为零代码改动就能解决问题。
注意:测试前记得清理SonarQube的项目缓存,确保新配置生效。
内容的提问来源于stack exchange,提问作者JD Smith
相关产品推荐
相关产品推荐

