使用 SonarQube 如何实现 java 导入黑名单?
Using SonarQube how would one implement a java import blacklist?
使用 SonarQube(3.0 版)我正在尝试实施 java 库的黑名单。例如,我希望 SonarQube 为任何包含 org.apache.lang.StringUtils
导入的 java 文件生成代码气味
我确实找到了这条规则:"Track uses of disallowed dependencies" 但是如前所述,我想重点关注 java 文件导入语句本身。例如
import org.apache.lang.StringUtils; // SonarQube should generate smell for this line
import java.awt.Component;
理想情况下,我想维护一个 deprecated/bug 导致导入的集中列表,该列表将涵盖以下用例:
- 提醒开发者他们的代码更改包括禁止的导入
- 扫描遗留代码库以查找被禁止的、可能导致导入的错误
您可能需要创建自定义规则,寻找特定的 fqcn 或包。以下是如何执行此操作的概述:https://docs.sonarqube.org/latest/extend/adding-coding-rules/ .
正在关注 David M. Karr's advice I looked through the custom rules documentation and found this template; Track uses of disallowed classes
打开此模板进行配置,会出现一条注释,说明规则参数(在本例中为 class 名称)允许使用正则表达式 - 并明确建议在定位包时使用正则表达式。
传递给 ClassName 参数的带有 org.apache.commons.lang.StringUtils
的自定义规则实现了问题中所述的预期结果。此外,可以使用 org.apache.commons.lang.*
定位整个包
TL;DR
在 SonarQube 仪表板中
- 点击主导航栏中的“规则”
- 搜索“跟踪使用不允许的 classes”
- Select 规则标记为“模板”
- 在屏幕底部点击“创建”
- 填写自定义规则配置表单,最重要的是使用完全限定的 class 例如 ClassName 字段
org.apache.commons.lang.StringUtils
或使用正则表达式来定位整个包,例如org.apache.commons.lang.*
- Create/Save
- 将这个新的自定义规则添加到与目标项目关联的配置文件中,然后将其激活。 (我确定还有其他方法可以完成这一部分,这对我的小项目很有效,通过扩展 Java SonarWay 配置文件)
使用 SonarQube(3.0 版)我正在尝试实施 java 库的黑名单。例如,我希望 SonarQube 为任何包含 org.apache.lang.StringUtils
我确实找到了这条规则:"Track uses of disallowed dependencies" 但是如前所述,我想重点关注 java 文件导入语句本身。例如
import org.apache.lang.StringUtils; // SonarQube should generate smell for this line
import java.awt.Component;
理想情况下,我想维护一个 deprecated/bug 导致导入的集中列表,该列表将涵盖以下用例:
- 提醒开发者他们的代码更改包括禁止的导入
- 扫描遗留代码库以查找被禁止的、可能导致导入的错误
您可能需要创建自定义规则,寻找特定的 fqcn 或包。以下是如何执行此操作的概述:https://docs.sonarqube.org/latest/extend/adding-coding-rules/ .
正在关注 David M. Karr's advice I looked through the custom rules documentation and found this template; Track uses of disallowed classes
打开此模板进行配置,会出现一条注释,说明规则参数(在本例中为 class 名称)允许使用正则表达式 - 并明确建议在定位包时使用正则表达式。
传递给 ClassName 参数的带有 org.apache.commons.lang.StringUtils
的自定义规则实现了问题中所述的预期结果。此外,可以使用 org.apache.commons.lang.*
TL;DR
在 SonarQube 仪表板中
- 点击主导航栏中的“规则”
- 搜索“跟踪使用不允许的 classes”
- Select 规则标记为“模板”
- 在屏幕底部点击“创建”
- 填写自定义规则配置表单,最重要的是使用完全限定的 class 例如 ClassName 字段
org.apache.commons.lang.StringUtils
或使用正则表达式来定位整个包,例如org.apache.commons.lang.*
- Create/Save
- 将这个新的自定义规则添加到与目标项目关联的配置文件中,然后将其激活。 (我确定还有其他方法可以完成这一部分,这对我的小项目很有效,通过扩展 Java SonarWay 配置文件)