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

时间:2019-07-17 10:43:04

标签: java sonarqube sonarlint

SonarQube 6.5中似乎没有规则“应使用Javadoc记录公共类型,方法和字段(API)”。

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

即使某些方法缺少Javadoc,它也没有违反此规则。 其他规则可以很好地处理违规情况。

我的Test类是这样的:

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;
 }
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

在激活规则期间,提示菜单会询问应运行此规则的类的模式。如图所示:

enter image description here

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