未记录 API 声纳规则在声纳 6.5 中不起作用?

Undocumented API sonar rule is not working in sonarqube 6.5?

规则 "Public types, methods, and fields (API) should be documented with Javadoc" 似乎在 SonarQube 6.5 中不起作用。

我在 Java 质量配置文件中激活了规则,将配置文件设置为默认配置文件,并通过 mvn sonar:sonar 命令 运行 我的 Java 代码库。

它没有发现任何违反此规则的行为,即使缺少某些方法 Javadoc。 其他规则可以很好地发现违规行为。

我的测试class是这样的:

package counter;

/**
 * This is a Javadoc comment
 */
public class MyClass {    

 public static final int DEFAULT_STATUS = 0;    // Compliant - static constant
 private int status;                           // Compliant - not public

 public String message;                  // Noncompliant

 public MyClass() {                         // Noncompliant - missing documentation
   this.status = DEFAULT_STATUS;
 }

 public void setStatus(int status) {  // Compliant - setter
   this.status = status;
 }

 protected int doSomething() {
     return status + 24;// Compliant - not public
 }

 public int doSomething2(int value) {  // Noncompliant
     int a = value*8;
     return a*1;
 }

 public int doSomething3(int value) {  // Noncompliant
   return value*9;
 }
}

这似乎是 SonarQube 6.5 中的 issue。你可以做的是升级到 SonarQube 6.7.7,更新所有插件,检查使用的配置文件中规则的激活,然后再试一次。请注意,最新的 LTS 版本是 7.9,因此您应该准备从 6.7.x 升级到下一个主要版本 7.9。也再次更新插件。

终于明白了。 在默认设置下,UndocumentedAPI 规则仅适用于 api 包(名称中包含 api 的包)。

在规则激活期间,提示菜单要求输入 类 的模式,该模式应该 运行 此规则。如图所示:

现在我们可以根据需要轻松更改此设置。