web-dev-qa-db-ja.com

Karmaによって実行されるLCOVレポートの形式を変更するにはどうすればよいですか?

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のフォーマットを変更する方法はありますか?


イスタンブールコード を見ると、さまざまなラベルの意味を想像できます。

  • BRFBRHBRDAブランチ用です。
  • FNFNFFNHFNDA関数用です。
  • LNLFLHlines用です。
  • *Fは合計であり、*Hは対象情報です。

イスタンブールとソナーのカバレッジの違いは、後者が関数とブランチのカバレッジを完全に無視しているという事実によるものと思われます。

それを解決するためのアイデアはありますか?

38
Romain Linsolas

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
2
Dorian