【问题标题】:Sonar javadoc rule声纳 javadoc 规则
【发布时间】:2018-04-18 09:04:49
【问题描述】:

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

这是我在声纳中得到的:

我的任务之一是检查 javadoc 是否包含描述或为空并抛出违规。

我用这段代码来检查它:

@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 但规则读取它有但没有描述。

有没有办法防止这个问题?

【问题讨论】:

  • “我正在使用 Sonar 内部库重写 checkstyle 规则 JavadocStyle”:你的代码在哪里?
  • 对不起。我用代码更新了我的描述

标签: java sonarqube javadoc squid rule


【解决方案1】:

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

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

当类或方法没有任何 javadoc 时,javadoc.javadocLines 将不返回任何内容。但是 String.join 仍然会为字符串行变量添加空间。在规则检查行变量中是否有东西并创建空间规则后认为有 javadoc 并且它是空的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 2013-04-30
    • 1970-01-01
    • 2023-04-02
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多