Сонар javascript статический анализ кода - отсутствует javascript riport. Maven проект
Помоги мне, пожалуйста. Я не знаю, почему отсутствует только статический код javascript, который анализирует riports.
Итак, у меня есть проект maven с несколькими модулями и кодами javascript в проекте внешнего интерфейса.
- Плагин SonarJS установлен
- я бегу: mvn чистая установка сонар: сонар
- я настроил сонар из pom.xml вместо sonar-project.properties
- версия сонара: 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
Но не имеет никаких особых настроек.
3 ответа
Вы написали в комментарии, что:
sonar.javascript.exclusions=**/node_modules/**,**/bower_components/**,**/js/**
Если вы не указали это ни в каком pom.xml
файл, то это значение берется с сервера. Вы можете увидеть конфигурацию, открыв: https://sonar.host/admin/settings?category=javascript
или же Administration → Configuration → JavaSctript
, Далее вы должны найти JavaScript Exclusions
раздел:
Возможно, вы также увидите **/js/**
, С моей точки зрения, вы должны удалить эту запись, потому что она не имеет смысла. Если вы не можете этого сделать, вам нужно перезаписать значение по умолчанию, добавив:
<sonar.javascript.exclusions>**/node_modules/**,**/bower_components/**</sonar.javascript.exclusions>
или же
<sonar.javascript.exclusions></sonar.javascript.exclusions>
Я бы сказал, что сначала вы хотите попробовать выполнить покрытие с файлом sonar.properties, чтобы просто выяснить - какие ключи вам по-прежнему не хватает, предпочтительно исключительно для js. Кроме того, правильная настройка может зависеть от используемой вами версии сонара.
Я вижу, что у вас есть sonar.lcov.javascript.reportPath дважды. Какой из них правильный (для начала используйте жестко заданный путь, чтобы убедиться, что вы получаете отчеты)
Во-вторых, в моем файле проекта я также должен был указать используемый плагин (что-то вроде sonar.js.coveragePlugin = lcov). Возможно, вы также хотите добавить, так как вы используете lcov.
Наконец, у меня также есть следующий установленный флаг: sonar.dynamicAnalysis=reuseReports
Это было необходимо для повторного использования отчетов, созданных во время сборки.
Кстати, моя конфигурация была создана 3 года назад для последней версии сонара. Возможно, произошли некоторые изменения с новыми выпусками Sonar.
В модуле pom maven, содержащем код JS, установите sonar.sources (и тестируйте, если хотите) своего кода JS