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

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

# 1 問題の具体例

`a.c` と `a.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` を並べて使えます。

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