Сонар javascript статический анализ кода - отсутствует javascript riport.Maven проект - PullRequest
0 голосов
/ 08 июня 2018

Помогите мне, пожалуйста.Я не знаю, почему отсутствует только статический код javascript для анализа riports.

Итак, у меня есть проект maven с несколькими модулями и кодами javascript в проекте внешнего интерфейса.

  • Установлен плагин SonarJS
  • Я работаю: mvn clean install sonar: sonar
  • У меня есть конфигурация sonar из pom.xml вместо sonar-project.properties
  • версия сонара: версия сообщества 6.7

В обзоре сонара он содержит статический код java, анализирующий riport обоих модулей, но ничего о кодах 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

Но не имеет никаких особых настроек.

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

В модуле maven, содержащем код JS, задайте sonar.sources (и тестируйте, если хотите) своего кода JS

0 голосов
/ 11 июня 2018

Вы написали в комментарии, что:

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>
0 голосов
/ 08 июня 2018

Я бы сказал, что сначала вы хотите попробовать выполнить покрытие с файлом sonar.properties, чтобы просто выяснить - какие ключи вам по-прежнему не хватает, предпочтительно исключительно для js.Кроме того, правильная настройка может зависеть от используемой вами версии Sonar.

Я вижу, что у вас есть sonar.lcov.javascript.reportPath дважды.Какой из них правильный (для начала используйте жестко заданный путь, чтобы убедиться, что вы получаете отчеты)

Во-вторых, в моем файле проекта мне также пришлось указать используемый плагин (что-то вроде sonar.js.coveragePlugin = lcov).Возможно, вы также хотите добавить, так как вы используете lcov.

Наконец, у меня также установлен следующий флаг: sonar.dynamicAnalysis = reuseReports

Это было необходимо для повторного использования отчетов, которые былисгенерирован во время сборки.

Кстати, моя конфигурация была создана 3 года назад для последней версии сонара.Возможно, произошли некоторые изменения в новых версиях Sonar.

...