代码之家  ›  专栏  ›  技术社区  ›  n3d4ti

Sonar JavaScript静态代码分析-缺少JavaScript riport。马文项目

  •  0
  • n3d4ti  · 技术社区  · 6 年前

    请帮帮我。我不知道为什么只缺少javascript静态代码analyze riports。

    所以,我有一个maven项目,在前端项目中有多个模块和javascript代码。

    • 已安装SonarJS插件
    • 我在运行:mvn clean install sonar:sonar
    • 我从pom.xml而不是sonar-project.properties配置了sonar
    • Sonar版本:6.7社区版

    在声纳概述中,它具有Java静态代码分析两个模块,但没有JavaScript代码。

    这是我在父项目中的pom.xml设置。

     <?xml version="1.0" encoding="UTF-8"?>
     <project ... >
    ...
    <version>0.0.1-SNAPSHOT</version>
    <modules>
        <module>backend</module>
        <module>frontend</module>
    </modules>
    <properties>
        ...
        <!-- sonar -->
        <sonar.version>3.4.0.905</sonar.version>
        <sonar.host.url>http://my.sonar.domain.url</sonar.host.url>
        <sonar.login>asdsd43f8g7fs498u9s8df7s97zf9er97zf7</sonar.login>
        <sonar.javascript.file.suffixes>.js,.jsx,.vue</sonar.javascript.file.suffixes>
        <sonar.sources>src/main/</sonar.sources>
        <sonar.test>src/test/</sonar.test>
        <sonar.jacoco.itReportPath>${project.testresult.directory}/coverage/jacoco/jacoco-it.exec</sonar.jacoco.itReportPath>
        <sonar.jacoco.reportPath>${project.testresult.directory}/coverage/jacoco/jacoco.exec</sonar.jacoco.reportPath>
        <sonar.java.codeCoveragePlugin>jacoco</sonar.java.codeCoveragePlugin>
        <!-- For Java -->
        <sonar.junit.reportsPath>reports/java/surefire-reports</sonar.junit.reportsPath>
    
        <!-- For JavaScript -->
        <sonar.javascript.lcov.reportPath>reports/js/lcov.dat</sonar.javascript.lcov.reportPath>
        ...
    </properties>
    <dependencies> ... </dependencies>
    <build>
        <pluginManagement>
            <plugins>
                ...
                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>${sonar.version}</version>
                    <executions>
                        <execution>
                            <id>sonar-run</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>sonar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                ....
            </plugins>
        </pluginManagement>
       </build>
    </project>
    

    更新:

    我用-x调试运行了声纳分析。以下日志:

    [DEBUG] 15:08:27.144 'src/main/resources/static/js/template/template.js' excluded by org.sonar.plugins.javascript.JavaScriptExclusionsFileFilter
    [DEBUG] 15:08:27.145 'src/main/resources/static/js/navigation/navigationEvents.js' excluded by org.sonar.plugins.javascript.JavaScriptExclusionsFileFilter
    [DEBUG] 15:08:27.145 'src/main/resources/static/js/navigation/navigation.js' excluded by org.sonar.plugins.javascript.JavaScriptExclusionsFileFilter
    [DEBUG] 15:08:27.145 'src/main/resources/static/js/navigation/moduleLoader.js' excluded by org.sonar.plugins.javascript.JavaScriptExclusionsFileFilter
    

    但没有任何exculd设置。

    3 回复  |  直到 6 年前
        1
  •  1
  •   agabrys    6 年前

    你在评论中写道:

    sonar.javascript.exclusions=**/node_modules/**,**/bower_components/**,**/js/**
    

    如果你没有在任何 pom.xml 文件,然后从服务器获取该值。您可以通过打开: https://sonar.host/admin/settings?category=javascript Administration → Configuration → JavaSctript . 接下来你必须找到 JavaScript Exclusions 章节:

    JavaScript Exclusions section

    或许你也会看到 **/js/** . 在我看来,你应该删除那个条目,因为它没有意义。如果不能,则必须通过添加以下内容覆盖默认值:

    <sonar.javascript.exclusions>**/node_modules/**,**/bower_components/**</sonar.javascript.exclusions>
    

    <sonar.javascript.exclusions></sonar.javascript.exclusions>
    
        2
  •  0
  •   Elena Vilchik    6 年前

    在包含js代码的maven模块的pom中,设置js代码的sonar.sources(如果需要,还可以进行测试)

        3
  •  0
  •   Vladimir M    6 年前

    我想说的是,首先你要尝试使用sonar.properties文件执行覆盖,以确定哪些键仍然丢失,最好是js专用的。此外,正确的设置可能取决于您使用的实际声纳版本。

    我看到的一件事是你有两次sonar.lcov.javascript.reportpath。哪一个是正确的(从使用硬编码路径开始,以确保获得报告)

    其次,在我的项目文件中,我还必须指定要使用的插件(类似sonar.js.coverageplugin=lcov)。因为您使用的是lcov,所以还需要添加pehap。

    最后,我还设置了以下标志: sonar.dynamicanalysis=重用端口

    这是重用在构建期间生成的报告所必需的。

    另一方面,我的配置是在3年前创建的,是当时最新的声纳版本。新发布的声纳可能会有一些变化。