如何獲取sonar tree的變量值

獲取某個(gè)節(jié)點(diǎn)的變量,tree.arguments(),返回Arguments, public interface Arguments extends ListTree<ExpressionTree> ,所以每個(gè)變量對(duì)應(yīng)一個(gè)ExprssionTree,根據(jù)不同的類型解析表達(dá)式即可。

sonar中將語(yǔ)法樹重新解析為 public interface Tree,枚舉出enum Kind implements GrammarRuleKey(目前)119中不同的Kind。

原則上,針對(duì)不同的類型(可以作為變量的Kind),做不同的處理即可。

例如,基礎(chǔ)類型可以直接轉(zhuǎn)換為LiteralTree, 獲取value方法的值即可。

How to get the value of the arguments of the sonar tree relative

Custom Rule for Sonar Java similar

public class YourRule extends IssuableSubscriptionVisitor {

  @Override
  public List<Tree.Kind> nodesToVisit() {
    // Register to the kind of nodes you want to be called upon visit.
    return ImmutableList.of(
        Tree.Kind.MEMBER_SELECT,
        Tree.Kind.METHOD_INVOCATION);
  }

  @Override
  public void visitNode(Tree tree) {
    if (tree.is(Tree.Kind.MEMBER_SELECT)) {
      MemberSelectExpressionTree mset = (MemberSelectExpressionTree) tree;
      System.out.println(mset);
    } else if (tree.is(Tree.Kind.METHOD_INVOCATION)) {
      MethodInvocationTree mit = (MethodInvocationTree) tree;
      System.out.println(mit);
    }
  }
}

Get parent of method invocation - Java similar scenario

How to get value of a variable in SonarQube (custom-rules )? not relative

Writing a new custom Java Rule to find a method invocation no result

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容