互換性
dd-trace>=3.20.0
。jest>=24.8.0
、jest-circus
で実行した場合のみ。mocha>=5.2.0
。cucumber-js>=7.0.0
。Istanbul
コードカバレッジのみがサポートされています。
テストが Istanbul でインスツルメントされた場合、Datadog トレーサーは test.code_coverage.lines_pct
タグを通じてテストセッションのコードカバレッジを自動的に報告します。Istanbul でテストをインスツルメントするには、nyc
を使用します。
テストセッションから総コードカバレッジを報告するには、次の手順に従います。
nyc
をインストールします。
npm install --save-dev nyc
- テストコマンドを
nyc
でラップします。
{
"scripts": {
"test": "mocha",
"coverage": "nyc npm run test"
}
}
注: Jest にはデフォルトで Istanbul が含まれているので、nyc
をインストールする必要はありません。単に --coverage
を渡すだけです。
{
"scripts": {
"coverage": "jest --coverage"
}
}
- 新しい
coverage
コマンドでテストを実行します。
NODE_OPTIONS="-r dd-trace/ci/init" DD_ENV=ci DD_SERVICE=my-javascript-service npm run coverage
互換性
コードカバレッジが利用できる場合、Datadog トレーサー (v2.31.0 以降) は、テストセッションの test.code_coverage.lines_pct
タグでそれを報告します。
コードカバレッジの計算に Coverlet を使用している場合、dd-trace
を実行する際に DD_CIVISIBILITY_EXTERNAL_CODE_COVERAGE_PATH
環境変数にレポートファイルへのパスを指定します。レポートファイルは、OpenCover または Cobertura 形式である必要があります。または、DD_CIVISIBILITY_CODE_COVERAGE_ENABLED=true
環境変数で、Datadog トレーサーに内蔵されているコードカバレッジ計算を有効にできます。
高度なオプション
Datadog トレーサーのビルトインコードカバレッジは、.runsettings
ファイルを通して Coverlet
と VS Code Coverage
オプションの両方をサポートしています。
ファイル構造
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="DatadogCoverage">
<Configuration>
<!-- Datadog コードカバレッジの設定 -->
...
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
Coverlet オプション
オプション | メトリクス |
---|
ExcludeByAttribute | 属性で装飾されたメソッド、クラス、またはアセンブリをコードカバレッジから除外します。 |
ExcludeByFile | 特定のソースファイルをコードカバレッジから除外します。 |
除外する | フィルター式を使用してコードカバレッジ分析から除外します。 |
NodeJS
System.Diagnostics.CodeAnalysis
ネームスペースにある ExcludeFromCodeCoverage
属性を作成して適用することで、メソッド、クラス全体、またはアセンブリをコードカバレッジから除外することができます。
ExcludeByAttribute
プロパティと属性の短い名前 (ネームスペースを除いた型名) で追加の属性を除外します。
ソースファイル
ExcludeByFile
プロパティで特定のソースファイルをコードカバレッジから除外します。
- カンマで区切って、単一または複数のパスを使用します。
- 例えば
dir1/*.cs
のように、ワイルドカード (*
) を使用したファイルパスまたはディレクトリパスを使用します。
フィルター
フィルターでは、以下の構文のフィルター式を使って、除外するものを細かく制御することができます。
[<ASSEMBLY_FILTER>]<TYPE_FILTER>
ワイルドカードはサポートされています。
*
=> 0 文字以上にマッチします?
=> プレフィックス文字はオプションです
例:
[*]*
=> すべてのアセンブリのすべての型を除外します (インスツルメンテーションされるものはありません)[coverlet.*]Coverlet.Core.Coverage
=> coverlet.*
にマッチするアセンブリ (例えば coverlet.core
) に属する Coverlet.Core
ネームスペース内の Coverage
クラスを除外します[*]Coverlet.Core.Instrumentation.*
=> あらゆるアセンブリ内の Coverlet.Core.Instrumentation
ネームスペースに属するすべての型を除外します[coverlet.*.tests?]*
=> coverlet.
で始まり、.test
または .tests
で終わるアセンブリ内のすべての型を除外します (?
により s
はオプションになります)[coverlet.*]*,[*]Coverlet.Core*\
=> coverlet.*
にマッチするアセンブリを除外し、あらゆるアセンブリ内の Coverlet.Core
ネームスペースに属するすべての型を除外します
VS コードカバレッジオプション
詳細については、Microsoft ドキュメントのコードカバレッジ分析のカスタマイズを参照してください。
オプション | メトリクス |
---|
Attributes\Exclude | 属性で装飾されたメソッド、クラス、またはアセンブリをコードカバレッジから除外します。 |
Sources\Exclude | 特定のソースファイルをコードカバレッジから除外します。 |
Runsettings の例
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="DatadogCoverage">
<Configuration>
<!-- Coverlet 構成 -->
<ExcludeByAttribute>CompilerGeneratedAttribute</ExcludeByAttribute>
<ExcludeByFile>**/Fibonorial.cs</ExcludeByFile>
<Exclude>[myproject.*.tests?]*</Exclude>
<!-- VS Code Coverage configuration -->
<CodeCoverage>
<Attributes>
<Exclude>
<Attribute>^System\.ObsoleteAttribute$</Attribute>
</Exclude>
</Attributes>
<Sources>
<Exclude>
<Source>^MyFile\.cs$</Source>
</Exclude>
</Sources>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
互換性
コードカバレッジが利用できる場合、Datadog トレーサーは、テストセッションの test.code_coverage.lines_pct
タグでそれを報告します。
Jacoco はコードカバレッジライブラリとしてサポートされています。
プロジェクトにすでに Jacoco が構成されている場合、Datadog トレーサーはそれをインスツルメントし、カバレッジデータを自動的に Datadog に報告します。
そうでない場合、ランタイムでテスト実行に Jacoco を追加するようトレーサーを構成できます。
環境変数 DD_CIVISIBILITY_JACOCO_PLUGIN_VERSION
を使用して、注入したい Jacoco のバージョンを指定します (例: DD_CIVISIBILITY_JACOCO_PLUGIN_VERSION=0.8.11
)。
互換性
JUnit レポートのアップロードでは、コードカバレッジパーセンテージの値をアップロードできます。
datadog-ci junit upload --service <service_name> --report-metrics=test.code_coverage.lines_pct:85 <path>
この例では、85
はテストがカバーする行の割合であり、別のツールで生成する必要があります。
コードカバレッジレポートは別のプロセスで生成する必要があります。そうしないと、JUnit レポートのアップロードでコードカバレッジレポートが生成されません。報告されるメトリクス名は test.code_coverage.lines_pct
でなければなりません。
互換性
dd-trace>=2.5.0
.Python>=3.7
.coverage>=4.4.2
.pytest>=3.0.0
.pytest-cov>=2.7.0
.unittest>=3.8
.- コードカバレッジは
coverage.py
と pytest-cov
のみがサポートされています。
テストに coverage.py
または pytest-cov
がインスツルメンテーションされると、Datadog トレーサーはテストセッションの test.code_coverage.lines_pct
タグでコードカバレッジを自動的に報告します。
coverage.py
を使ってテストセッションから総コードカバレッジを報告するには、次の手順に従います。
coverage
をインストールします。
python3 -m pip install coverage
- 新しい
coverage
コマンドでテストを実行します。
DD_ENV=ci DD_SERVICE=my-python-service coverage run -m pytest
または、pytest-cov
を使ってテストセッションから総コードカバレッジを報告するには、次の手順に従います。
pytest
をインストールします。
python3 -m pip install pytest
pytest-cov
をインストールします。
python3 -m pip install pytest-cov
pytest
コマンドに --cov
フラグを追加してテストを実行します。
DD_ENV=ci DD_SERVICE=my-python-service pytest --cov