gpt4 book ai didi

java - Sonar javadoc规则

转载 作者:行者123 更新时间:2023-11-30 06:12:40 25 4
gpt4 key购买 nike

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

SonarLint shows which class or method violates rule

这是我在 Sonar 中得到的结果:

SonarQube view

我的任务之一是检查 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;
}
}

我的问题在第一次违规中显示:类没有 javadoc,但规则显示它有,但没有描述。

有办法避免这个问题吗?

最佳答案

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

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

当类或方法没有任何 javadoc 时,javadoc.javadocLines 将不返回任何内容。但 String.join 仍然会向 Stringlines 变量添加空间。在规则检查 rows 变量中是否有内容并发现 space 规则后,规则认为存在 javadoc 并且它是空的。

关于java - Sonar javadoc规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49895536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com