簡體   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