java - 如何获取 SonarQube 中变量的值(自定义规则)?

标签 java sonarqube rules

我最近开始研究 Sonar 自定义规则,所以我是新手。在编程时,我无法访问变量的值。

.g.考虑这个简单的例子

// Input program file

public void myMethod()
    {
        String a = "Name";
        String b ="Address"
        myMethod2(b);
    }

对于上述示例,如何获取变量 ab 的值和名称。

我试过使用 LiteralTree 但我只能获取值,而使用 Identifier Tree 我只能获取标识符的名称。

如何获取变量/标识符的名称和值?

最佳答案

您应该使用VariableTree,通过它的simpleName() 方法您可以访问IdentifierTreeinitializer() 允许使用初始化程序(它可能不存在,在这种情况下它将是 null)。但是,这仅适用于变量声明。对于作业,您将需要使用 AssignmentExpressionTree,因为这是另一个语法元素。

根据您想要实现的目标,您可能需要使用语义模型(通过使用 IdentifierTree.symbol(),例如,它可以通过 Symbol.usages() 方法。

关于java - 如何获取 SonarQube 中变量的值(自定义规则)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50039501/

相关文章:

jenkins - Sonar 服务器无法访问

java - SonarAnalyzer Java 规则

html - CSS 的 vertical-align 属性起作用的条件是什么?

java - 使用正则表达式检查 wiki 链接

java - Kafka Consumer 收到相同的消息

java - SonarQube 插件未找到 JaCoCo 结果

nginx - 在反向代理 (Nginx) 后面运行 Sonarqube

java - 超能力规则语言: return datafield of class from pattern

java - Java中ArrayList的内存大小是多少

java - 使用 Android 的 AudioTrack 类生成正弦波、方波、三角波、锯齿波音频信号