繁体   English   中英

sonarqube java规则不扩展类应该是最终的

[英]sonarqube java rule not extended classes should be final

我编写了一个规则,该规则检查未扩展的类是否为最终类。 我已经使用ClassTree.symbol()。usages()来检查是否正在使用它:

public List<Kind> nodesToVisit() {
    // TODO Auto-generated method stub
    return ImmutableList.of(Tree.Kind.CLASS);
}

public void visitNode(Tree ttree) {
    ClassTree tree = (ClassTree) ttree;
    List<IdentifierTree> itl = tree.symbol().usages();
    System.out.println(itl.size());
}

当我在这里测试规则时:

public class Class1 {

}

public class Class2 {

}

public class Class3 extends Class1 {

}

Class1用法= 1 Class2和Class 3用法= 0;

仅当我在一个文件中定义一个文件时,才定义这三个类。 当我在声纳中对Class1进行测试时,Class2和Class3是项目的分离类,结果是:Class1,Class2和Class3的用法= 0,即使Class1被Class3扩展了。

我该如何解决?

提前致谢

您将无法基于SonarJava语义引擎编写此类规则。 通过tree.symbol().usages()访问的tree.symbol().usages()仅指正在分析的当前文件中的用法。

无法识别或收集其他文件中的其他用法(例如类型扩展名),因此当前无法使用SonarJava API轻松实现您要实施的规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM