【问题标题】:MethodInvocationTree usage in SonarQube using Java使用 Java 的 SonarQube 中 MethodInvocationTree 的使用
【发布时间】:2016-10-20 11:40:40
【问题描述】:

要求是标记所有出现的HttpSession session = request.getSession();

我在方法 nodesToVisit 中使用 Tree.Kind.METHOD_INVOCATION 来拦截所有方法调用。我成功获取了 HttpSession 的实例

HttpSession session1 = request.getSession(); // Noncompliant
HttpSession session2 = request.getSession(true); // Noncompliant

但是树的符号类型是 !unknownSymbol!

感谢您在此处输入的任何内容。 sonarqube 分析器识别 javax.servlet 包是否需要任何特定设置?

【问题讨论】:

  • 由于您可能正在编写自定义规则,因此您应该 edit 包含您正在处理的语言的问题。
  • @G.Ann-SonarSourceTeam:我已经更新了问题的详细信息。在此感谢您的意见。

标签: java sonarqube customization


【解决方案1】:

由于类路径中缺少库,symbolType 未知。我们需要在 pom.xml 中为自定义插件添加依赖。

  1. 通过Junit测试源码分析时,必须使用 maven-dependency-plugin 用于提供依赖 jars。
  2. 在sonarqube中部署插件后,我们需要添加 sonar-project.properties 中的以下属性。

sonar.java.libraries=lib/*.jar

sonar.java.test.libraries=lib/*.jar

下面是pom.xml中添加的插件maven-dependency-plugin。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.10</version>
    <executions>
        <execution>
            <id>copy</id>
            <phase>test-compile</phase>
            <goals>
                <goal>copy</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>javax</groupId>
                        <artifactId>javaee-api</artifactId>
                        <version>7.0</version>
                        <type>jar</type>
                    </artifactItem>
                </artifactItems>
                <outputDirectory>${project.build.directory}/test-jars</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

【讨论】:

    猜你喜欢
    • 2017-01-05
    • 2016-12-30
    • 2011-12-19
    • 1970-01-01
    • 2017-08-04
    • 2015-07-30
    • 2017-08-27
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多