JavaScriptコードのカバレッジを報告するようにKarmaを構成しました。 karma.conf.js
ファイルの構成の一部は次のとおりです。
coverageReporter: {
reporters: [
{
type: 'html',
dir: 'build/karma/coverage'
},
{
type: 'lcov',
dir: 'build/karma/coverage',
subdir: '.'
},
{
type: 'cobertura',
dir: 'build/karma/coverage'
}
]
},
私のlcov.info
ファイルの形式は次のとおりです。
TN:
SF:./app/scripts/app.js
FN:16,(anonymous_1)
FN:26,(anonymous_2)
FNF:2
FNH:1
FNDA:1,(anonymous_1)
FNDA:0,(anonymous_2)
DA:2,1
DA:20,1
DA:29,0
DA:34,0
LF:4
LH:2
BRF:0
BRH:0
end_of_record
残念ながら、 Sonarqube JavaScriptプラグイン はSF:
、DA:
またはBRDA:
で始まる行のみを考慮します(cf LCOVParser )。
そのため、LCOV HTMLレポート(イスタンブール製)では、同じデータでソナーよりも高いコードカバレッジが得られます。
生成されたlcov.info
のフォーマットを変更する方法はありますか?
イスタンブールコード を見ると、さまざまなラベルの意味を想像できます。
BRF
、BRH
、BRDA
はブランチ用です。FN
、FNF
、FNH
、FNDA
は関数用です。LN
、LF
、LH
はlines用です。*F
は合計であり、*H
は対象情報です。イスタンブールとソナーのカバレッジの違いは、後者が関数とブランチのカバレッジを完全に無視しているという事実によるものと思われます。
それを解決するためのアイデアはありますか?
cat lcov.info | egrep "^(SF|DA|BRDA):" > lcov.info.new; mv lcov.info.new lcov.info
を実行するスクリプトを実行できます。
それで私は得る:
SF:./app/scripts/app.js
DA:2,1
DA:20,1
DA:29,0
DA:34,0