声纳javadoc规则

声纳javadoc规则,java,sonarqube,javadoc,squid,rule,Java,Sonarqube,Javadoc,Squid,Rule,目前,我正在使用Sonar内部库重写checkstyle规则JavadocStyle。但我面临一个问题——即使方法或类没有javadoc,规则也会在nominDescription()上抛出true。我正在使用。 这是我的测试课: 这是我在声纳中得到的: 我的任务之一是检查javadoc是否包含description或为空,并抛出冲突 我使用此代码检查它: @Override public void visitNode(Tree tree) { Javadoc javadoc = n

目前,我正在使用Sonar内部库重写checkstyle规则JavadocStyle。但我面临一个问题——即使方法或类没有javadoc,规则也会在nominDescription()上抛出true。我正在使用。 这是我的测试课:

这是我在声纳中得到的:

我的任务之一是检查javadoc是否包含description或为空,并抛出冲突

我使用此代码检查它:

@Override
public void visitNode(Tree tree) {
    Javadoc javadoc = new Javadoc(tree);
    String lines = String.join("  ", javadoc.javadocLines);

    // Javadoc description
    reportEmptyDescription(tree, javadoc);

}

public void reportEmptyDescription(Tree tree, Javadoc javadoc) {
    if (isDescriptionEmpty(javadoc)) {
        reportIssue(tree.firstToken(), "Javadoc has empty description section");
    }
    if (tree.is(Tree.Kind.METHOD) && ((MethodTree) tree).symbol().returnType().toString() != "void"
            && isReturnDescriptionEmpty(javadoc)) {
        reportIssue(tree.firstToken(), "Javadoc has empty return description");
    }
    if (tree.is(Tree.Kind.METHOD) && !((MethodTree) tree).parameters().isEmpty()
            && isParametersDescriptionEmpty(javadoc)) {
        reportIssue(tree.firstToken(), "Javadoc has empty parameters description");
    }
}

public boolean isDescriptionEmpty(Javadoc javadoc) {
    return javadoc.noMainDescription(); // check if it returns true when description exists
}

public boolean isReturnDescriptionEmpty(Javadoc javadoc) {
    return javadoc.noReturnDescription(); // check if it returns true when description exists
}

public boolean isParametersDescriptionEmpty(Javadoc javadoc) {
    if (javadoc.undocumentedParameters().isEmpty()) {
        return false;
    } else {
        return true;
    }
}
我的问题显示在第一个冲突中:类并没有javadocs,但规则读取它有但并没有描述


有什么方法可以防止这个问题吗?

我发现了这个问题。它来自这一行:

String lines = String.join("  ", javadoc.javadocLines);

当类或方法没有任何javadoc时,javadoc.javadocLines将不返回任何内容。但是String.join仍然会为String行变量添加空间。在规则检查行变量和founds空格中是否有内容后,规则认为有javadoc,它是空的

“我正在使用Sonar内部库重写checkstyle规则JavadocStyle”:您的代码在哪里?很抱歉。我用代码更新了我的描述