OpenCppCoverage の source 指定における中間一致の仕様

OpenCppCoverage の --sources オプションには 終端記号や完全一致を強制する仕組みはありません。中間一致 (部分一致) で動作する仕様になっています。

1 問題の具体例

a.ca.cc が存在する場合、--sources=a.c と指定すると a.cc もマッチしてしまいます。

2 回避方法

a.c だけを対象にして a.cc を除外したい場合、以下の方法が使えます。

2.1 方法 1: より具体的なパスを指定する

ファイルがディレクトリ構造で区別できる場合、パスを含めて指定します。

--sources=src\a.c

これで src\a.cc は除外されます。

2.2 方法 2: --excluded_sources で除外する

a.c を含めつつ、a.cc を明示的に除外します。

--sources=a.c --excluded_sources=a.cc

--excluded_sources--sources より優先されるため、a.cc がマッチしても除外されます。

2.3 方法 3: ワイルドカード + 除外の組み合わせ

複数ファイルがある場合、ワイルドカードと除外を組み合わせます。

--sources=*.c --excluded_sources=*.cc

.c 拡張子のみを対象にし、.cc を除外できます。

3 注意点

  • OpenCppCoverage のパターンマッチは単純な部分一致であり、正規表現や終端アンカー ($ など) は使えません。
  • パスの区切り文字は \ (Windows) で記述します。
  • 複数の --sources--excluded_sources を並べて使えます。

この制約により、ファイル名の設計段階で区別しやすい名前を付けておくか、上記の回避方法を使って対処する必要があります。