2011-02-04 7 views
8

変更をコミットする前に、コードカバレッジレポートを使って自動的にまたは手動ですべてのテストが行​​われていることを確認したいと思いますが、自動テストがあり、私の変更の影響を受けません。コードカバレッジをバージョンコントロールにリンクする

コードカバレッジレポートを持つバージョン管理ツールとの差分を参照できるツールがあり、変更されたものがすべて実行されていることを確認してください。

コードカバレッジでは、これはセキュリティの誤った感覚を与える可能性があります。このようなものであれば、それ以上のことは試みる価値はあると思います。私はgitとPHPを使用しています - 私は実行したものをブラウズするためにXCacheのコードカバレッジ・インターフェースを使用しました。有用ですが、git commitまたはpush timeで何かが自動的に実行できる場合は素晴らしいでしょう。

+0

プログラマに移行する投票.stackexchange.com – Mchl

答えて

3

git diffsには、diff-coverという名前のツールがあり、カバレッジを確認できます。 CoberturaのXMLカバレッジレポートを取得し、git diffの出力と比較します。次に、diff内の行のカバレッジ情報を報告します。適切なカバレッジxmlファイルを考えると

、あなたがmaster枝に比べて、変更の適用範囲を確認するには、このコマンドを使用することができます。

$ diff-cover coverage.xml 

長いとして、CIサーバと統合することも非常に単純ですJenkinsの$GIT_PREVIOUS_COMMITのように、あなたが比較する必要があるコミットを提供することができます。

+0

PHP単体テストの実行時にCobertura XMLフォーマットを取得するにはどうすればよいですか?このツールを '--coverage-clover = coverage.xml'と一緒に使うと、' AttributeError: 'NoneType'オブジェクトには 'replace''属性がありません –

3

continuous integrationビルドサーバーを設定することができます(多くはexcellent, free build serversです)。構築ステップの1つは、コードカバレッジを実行することです。レガシーコードを無視して、レガシーでないコードのカバレッジのみを計算するように設定できます。カバレッジが< xx%の場合、ビルドに失敗するように設定します。また、カバレッジ%が前回のビルドから減少した場合でも失敗します。

+1

良いアイデア。すべてのチェックインやプッシュでコードカバレッジのような重い作業をすると、バージョン管理が使いにくくなり、人々はそれを嫌うでしょう。代わりに、人々がメインラインにまったく押し込まないようにしてください。継続的な統合サーバー(私はgitbuilderが好きです)の人のブランチをテストし、その後、継続的な統合がそれらを承認した後でのみ、それらのブランチをメインラインにマージします。 – apenwarr

+1

私の質問を読んで、間違って強調しました。ポイントは、コミット時に実行され、私がコミットするのを妨げるものではありません。要点は、コミットする前に私が変更したすべてのコードを実行したことを確信できることです。コミット/プッシュタイムで自動実行できることは、ほんのわずかなボーナスであり、実際の要件ではありませんでした。 – rjmunro

+0

@rjmunro:私の答えはあなたが求めているものではないが、あなたが得ることができるほど近いと思う。 –

関連する問題