【发布时间】:2018-01-31 21:49:01
【问题描述】:
SonarQube 规则对某些文件可能很重要但对其他文件完全无用的用例真的很容易,我将仅举一些示例:
规则“应该添加缺失的翻译” 非常适合在各种 messages_xx.properties 中查找缺失的键。然而,每组属性文件总是有一个空的 messages_en.properties(至少对我们来说,英语是默认语言环境)。对于这个文件,添加密钥是一个实际的错误。
另一个例子是“字符串字面量不应该被复制”:在普通的 Java 文件中,复制的字符串会引入错误(因为您可能会更改一个而不是另一个)。在测试文件中强制执行此代码会导致代码不可读,因为重复代码通常在测试对象的初始化和/或测试失败时打印出来的消息中。
我可以很容易地继续讨论测试用例与“真实”Java 类的区别。即使测试代码应该具有相同的质量测量值,但在实践中却大不相同。
现在的问题是:如何在 Sonar 中处理这些规则?
我已经丢弃的琐碎答案:
- 完全删除规则(它们非常有用)
- 修复规则(第一个示例甚至在代码中引入了错误)
- 将测试标记为
won't fix(太过分了)
所以我想我想根据项目(例如排除org.acme.project.it)或文件名(例如排除*Test.java)更改质量配置文件。或者也许只为某些文件名模式启用规则。
处理仅适用于特定文件组的 SonarQube 规则的最佳方法是什么?
【问题讨论】: