java - 如何获取 Sonar 树的参数值

标签 java sonarqube

我正在为 SonarQube for java 编写自定义规则,我想检查参数的值是否合格。例如,我想知道 String 是否符合特定模式。我只能测试参数是否为字符串,但我无法获得确切的值。 API 允许我这样做吗?

例如下面的代码

log.error("errorID:210134 It's an error");

我可以获取参数并测试字符串是否包含 errorID 吗?

另外,能否获取方法调用的变量是什么?

例如下面的代码

log.error("errorID:210134 It's an error");

我怎么知道日志是类 Logger 的对象?

最佳答案

以下应该可以解决问题:

  • 查看方法调用的参数时,检查其种类是否为 STRING_LITERAL,然后将参数转换为 LiteralTree。从那里,您将能够以 String 的形式访问它的值(请注意,它将包含双引号)。
  • 要检查调用是否在变量上完成,请从方法调用中获取 methodSelect() 表达式树。如果它的种类是 MEMBER_SELECT,则将其转换为 MemberSelectExpressionTree。从那里,检查 expression() 的类型是否是 IDENTIFIER。如果是这样,那么您将能够获得 IdentifierTree 及其关联的符号。然后您将能够判断调用该方法的符号是否为变量,检查其类型等。

关于java - 如何获取 Sonar 树的参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38862873/

相关文章:

sonarqube - 使用 MSBuild Scanner 时如何排除单个文件

php - Sonarqube 找不到 junit 报告

java - Sonarlint 提示我的源文件中有许可证 header

sonarqube - 嵌入错误: When analyzing c# projects

java - 使用自定义错误消息以编程方式关闭应用程序?

具有无意义类型通配符的方法的 Java API 类

java - 如何在 Java 中可视化实时 3D 运动?

java - 我想用默认属性覆盖字段输入中的值

Java 和统一码

maven - 如何在 SonarQube 中使用增量模式?