在某些情况下,SonarQube规则对于某些文件可能很重要,而对其他文件却完全没有用,这真的很容易,我仅举一些例子:

规则“应该添加缺少的翻译”对于在各种message_xx.properties中查找缺少的键确实非常有用。但是,每组属性文件始终有一个空的messages_en.properties(至少对我们而言,其中英语是默认语言环境)。对于此文件,添加密钥是一个实际的错误。

另一个示例是“字符串文字不应该重复”:在普通的Java文件中,重复的字符串会引起bug(因为您可能会更改一个而不是另一个)。在测试文件中,执行此代码会导致代码无法读取,因为重复的代码通常是在测试对象的初始化和/或测试失败时打印出的消息中。

我可以轻松地继续测试用例与“真实” Java类的区别。尽管测试代码应该具有相同的质量度量,但实际上它是完全不同的。

现在的问题是:如何在声纳中处理这些规则?

我已经舍弃的简单答案:


完全删除规则(它们非常有用)
修正规则(第一个示例甚至在代码中引入了错误)
将测试标记为won't fix(太多了)


所以我想我想根据项目(例如排除org.acme.project.it)或文件名(例如排除* Test.java)更改质量配置文件。或者也许只为某些文件名模式启用规则。

处理仅适用于特定文件组的SonarQube规则的最佳方法是什么?

最佳答案

您要set up some exclusions。通过排除,您可以完全忽略某些文件,或者相反地忽略除指定的文件集之外的所有文件。您可以设置覆盖范围或重复项的排除项。与您的问题最相关的是,您可以设置多种排除问题的方式。

关于java - 根据文件名更改SonarQube的质量配置文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48540207/

10-14 13:27
查看更多