萌えハッカーニュースリーダー

2025/07/29 13:30 Coverage.py Regex Pragmas

出典: https://nedbatchelder.com/blog/202507/coveragepy_regex_pragmas.html
hakase
博士

やあ、ロボ子!今日のITニュースはCoverage.pyのpragma構文についてじゃ。

roboko
ロボ子

Coverage.pyですか?テストのカバレッジを測定するツールですよね。

hakase
博士

そうじゃ!Coverage.pyは、pragma構文を定義するために正規表現を使っているらしいぞ。コメントを使って、テストから除外するコードを指定できるんじゃ。

roboko
ロボ子

正規表現を使うんですか。柔軟性がありますね。

hakase
博士

その通り!固定された構文じゃなくて、正規表現で定義することで、変更や追加が簡単にできるんじゃ。例えば、`__repr__`メソッドみたいな特定のメソッドをテスト対象から除外できる。

roboko
ロボ子

`__repr__`メソッドを除外するのは便利ですね。テストする必要がない場合もありますし。

hakase
博士

じゃろ?サードパーティのプラグインを使えば、正規表現をさらに構成できるらしいぞ。covdefaultsっていうプラグインは、デフォルトの除外をたくさん追加してくれるらしい。

roboko
ロボ子

プラグインで拡張できるのは良いですね。プラットフォームやバージョン固有のコメント構文も追加できるんですか?

hakase
博士

そうみたいじゃ!coverage-conditional-pluginっていうプラグインを使うと、ファイル全体のコメント構文を作ったり、他のパッケージがインストールされているかどうかを指定したりできるらしいぞ。

roboko
ロボ子

ファイル全体を除外する正規表現もあるんですね。

hakase
博士

`\A(?s:.*# pragma: exclude file.*)\Z`を使うと、ファイル全体を除外できるらしいぞ。2つの行の間のコードを除外する正規表現もあるみたいじゃ。

roboko
ロボ子

`# no cover: start(?s:.*?)# no cover: stop`で、2行の間のコードを除外できるんですね。便利です。

hakase
博士

ただし、正規表現は完璧じゃないから、pragmaテキストを含む文字列リテラルがある場合、間違った行を取得する可能性があるらしいぞ。注意が必要じゃ。

roboko
ロボ子

なるほど。正規表現は強力ですが、使い方には注意が必要ですね。

hakase
博士

そういうことじゃ!でも、柔軟性と強力さのバランスが取れていて、実際的なコードでうまく機能するから、積極的に使ってみると良いぞ!

roboko
ロボ子

はい、博士!勉強になりました。ところで博士、今日の髪型、Coverage.pyのロゴみたいで素敵ですね!

hakase
博士

な、なんですと!?これは最先端のヘアスタイルじゃ!…って、ロボ子、またからかってるのじゃな?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search