java声纳javadoc规则
目前,我正在使用Sonar内部库重写checkstyle规则JavadocStyle。但我面临一个问题——即使方法或类没有javadoc,规则也会在nominDescription()上抛出true。我正在使用sonar javadoc class to get javadoc information。 这是我的测试课:
这是我在声纳中得到的:
我的任务之一是检查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,但规则读取它有但并没有描述
有没有办法防止这个问题
# 1 楼答案
我发现了问题所在。它来自这一行:
当类或方法没有任何javadoc时。javadocLines将不返回任何内容。但是绳子。join仍然会为字符串行变量添加空间。在规则检查行变量和founds空格中是否有内容后,规则认为有javadoc,它是空的