次の構造のアプリケーションがあります。
my-application
+- pom.xml
+- app
| +- scripts
| | +- app.js
| | +- **/*.js
| +- 3rd-party-libs
+- build
+- node_modules
+- test
pom.xml
SonarQube 分析を実行するためだけに作成しました。それ以外の場合、すべてのタスクは Grunt によって実行されます (テストは Karma で実行されます)。
の内容はpom.xml
次のとおりです。
<properties>
<sonar.language>js</sonar.language>
<sonar.sourceEncoding>UTF-8</sonar.sourceEncoding>
<sonar.javascript.coveragePlugin>lcov</sonar.javascript.coveragePlugin>
<sonar.javascript.lcov.reportPath>build/karma/coverage/lcov.info</sonar.javascript.lcov.reportPath>
<sonar.exclusions>app/3rd-party-libs/**,node_modules/**</sonar.exclusions>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
</properties>
<build>
<sourceDirectory>app/scripts</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
</build>
を実行すると、次の情報を含む がgrunt test
作成されます。build/karma/coverage/lcov.info
TN:
SF:./app/scripts/app.js
FN:16,(anonymous_1)
FN:26,(anonymous_2)
FNF:2
...
SonarQube 分析の後、ダッシュボードには 0% のコード カバレッジが表示されます。
のパスがSF:
エラーの原因であると思われました。したがって、別の値をテストするために別のプロパティを使用するsonar.javascript.lcov.reportPath
ようにプロパティを変更しました。lcov.info
app.js
./app.js
app/scripts/app.js
./app/scripts/app.js
私は何が欠けていますか?
念のため、に次の構成がありますkarma.conf.js
。
coverageReporter: {
reporters: [
{
type: 'lcov',
dir: 'build/karma/coverage',
subdir: '.'
}
]
},
ps: ソナーのバージョンは 3.7.2 ですが、4.3 でも試してみましたが、同じ結果でした...
編集: Sonar-runner を直接使用するように構成を更新しました。最新バージョンの Sonar (5.0.1) と JS プラグイン (2.3) を使用しています。lcov.info
また、「適切な」形式 (Sonar リポジトリの例と一致する少なくとも 1 つの形式) を持つように手動で変更しました。
SF:./app/scripts/app.js
DA:2,1
DA:20,1
DA:29,1
DA:34,1
end_of_record
SF:./app/scripts/services/exampleService.js
DA:1,1
DA:11,1
DA:12,0
end_of_record
次のsonar-project.properties
ようになります。
sonar.projectKey=xxx
sonar.projectName=xxx
sonar.projectVersion=xxx
sonar.sourceEncoding=UTF-8
sonar.sources=app/scripts
sonar.tests=test
sonar.exclusions=app/3rd-party-libs/**,node_modules/**
sonar.dynamicAnalysis=reuseReports
sonar.language=js
sonar.projectBaseDir=.
sonar.javascript.coveragePlugin=lcov
sonar.javascript.lcov.reportPath=build/karma/coverage/lcov.info
それでも、カバレッジの 0% :(