私は現在、より大きくより良い方法で管理する必要がある大きな Java プロジェクトに取り組んでいます。SVN、ハドソン、ソナーを使用しています。1 日に複数回チェックインした後、毎晩 Hudson ビルドが実行され、ソナーも実行されるため、新しい統計 (コード カバレッジ、複雑さなど) が得られます。しかし、これらの数値は、チェックイン後の状況/数値を示すため、現時点ではあまり役に立ちません。
実際の状況では、チェックインのたびにコードのカバー率が減少しています。ここで、現在のレベルで数値をベンチマークしたいと思います。コード カバレッジが現在 45% であるとしましょう。次のチェックインは、コード カバレッジが増加する場合にのみ許可されるべきであり、それ以外の場合は許可されません。
私の質問は、これをどのように行うことができるかです??
私はいくつかの調査を行い、2つの可能な方法を知りました
- SVN フックを使用する
- Hudson などの Continuous Build サーバーを使用する
最初のオプションのリンク/チュートリアル:サブバージョンにコミットするときにスクリプトを実行できますか?
次の2つのリンクは、2番目のオプションの方が優れていることを示唆しているようです(チェックイン時間がはるかに短いため)
- SVN とのソナー統合
- コミットする前にすべての単体テストに合格することを保証するにはどうすればよいですか?
- 「連続統合ゲーム」の使用も提案
質問
- ハドソンの構成に取り組んでいないので(ビルドを開始するために通常のユーザーとして使用しただけです)、上記の2つのリンクから理解できないのは...ソナーはチェックインが完了した後に実行されるため、ユーザーのチェックインをどのように停止しますかいくつかのテストケースが失敗した場合? それとも私の理解が間違っていますか?? または、チェックイン前後の統計を示す電子メールをすべての開発者に送信しますか? または、テストケースが失敗した場合にのみ電子メールを送信しますか??
- 私のユースケースは少し異なります...コミットするかどうかを決定する前に、新しいカバレッジ%(現在のチェックインの変更を含む)と古いカバレッジ%(チェックインの変更前)を確認し、新しい>古い場合にのみ許可します...ハドソン+ソナーを使用してこれを行うにはどうすればよいですか?? コード/構成の例はありますか??
- または、私のユースケースは Hudson を使用することでは不可能です...そして SVN フックが私にとって唯一のオプションです?? はいの場合、これを行う方法のコード例
質問をさらに明確にする必要がある場合はお知らせください