如何在sonarqube的python插件中检查方法调用

时间:2018-01-16 06:25:12

标签: python sonarqube

我想开发自定义的python插件并创建我自己的python检查器。在sonarqube java插件中,我可以使用' MethodInvocationTree'获取并检查方法调用中的参数。但是我怎么能在pythong插件中做同样的事情呢?

1 个答案:

答案 0 :(得分:0)

  

警告:SonarPython没有自定义规则API(使用XPath表达式除外)。要扩展它,您必须分叉sonar-python存储库,这是不推荐的。合并来自原始存储库的每个版本需要花费很多精力。最好在sonarqube google group上描述您的规则提示,或在sonar-python上创建github提取请求。

与SonarJava不同,SonarPython没有强类型AST(抽象语法树),您必须订阅并访问AstNode树。

为了可视化AST节点的结构,你应该使用" PythonToolkit" (打开sonar-python / sslr-python-toolkit / src / main / java / org / sonar / python / toolkit / PythonToolkit.java并执行" main") 然后在源代码面板中写下以下示例并按下"解析源代码"按钮:

print("a")
o.foo()

通过探索树,您将看到没有" MethodInvocation"。 但您可以订阅PythonGrammar.TRAILER,然后检查:

trailerNode.getFirstChild().is(PythonPunctuator.LPARENTHESIS)