2017-07-26 82 views
1

因此,我正在開發一個帶有一些自定義規則的SonarQube Java插件。在SonarQube分析過程中分析另一個文件(自定義規則)

其中一個需要分析特定註釋的Java文件,如果缺少該文件,它應報告一個問題,除非該註釋位於其超類中。

問題是,我無法分析另一個文件(超類)在當前分析(在課堂上)。

有沒有辦法做到這一點?

Obs:我使用的是SonarQube Server 5.6.3和Sonar Java Plugin 4.9。

回答

3

您可以使用語義模型獲取有關項目中定義的符號(類,方法等)的信息。當你分析類,您可以訪問ClassTree,這樣你就可以測試,如果註釋出現在其超喜歡這個

ClassTree classTree = (ClassTree) tree; 
Symbol.TypeSymbol classSymbol = classTree.symbol(); 
Type superClass = classSymbol.superClass(); 
SymbolMetadata superClassMetadata = superClass.symbol().metadata(); 
if (superClassMetadata.isAnnotatedWith("org.acme.MyAnnotation")) { 
    //... 
} 

見例如該檢查implementation,它使用API​​

+0

謝謝你的提示!它會幫助我很多。 –