YARD 戻り値の型エラーによるコミットを防ぐために RubyMine を構成するにはどうすればよいですか?
概要
私は RubyMine を IDE として使用して Ruby プロジェクトに取り組んでおり、YARD を利用しています。 YARD 戻り値の型の不一致エラーを含むコミットを制限するように RubyMine を設定する方法があるかどうか知りたいです。
次の例を考えてみましょう。
# @param [Integer] integer input
# @return [String]
def foo(input)
input # This causes a type mismatch
end
上記のコードでは、YARD コメントで指定された戻り値の型とメソッドの実際の戻り値の型の間に明らかな不一致があります。
RubyMine がエディタ ウィンドウに YARD エラーを表示する機能があることは知っていますが (以下のスクリーンショットを参照)、そのような型の不一致が検出された場合に積極的にコミットを阻止する組み込み機能は見つかりませんでした。
おそらくプラグインや外部ツールを通じて、コミットを許可する前にこのチェックを強制するように RubyMine を設定する方法はありますか? RubyMine で直接ではない場合、この機能を実現するために使用できる代替アプローチはありますか?
解決策
私は、IDE 固有のチェックと必須のコミット前チェックの両方に反対です。その理由は次のとおりです…
IDE でこれを実行すると、特定の IDE でのみ機能し、自分に対してのみ機能します。これをプロジェクト全体で行う方がよいでしょう。
コミット前のチェックは通常、バージョン管理システムによって処理されますが、コミットごとに必要な場合は非常に面倒で時間がかかる可能性があります。さらに、すべてのコミットがすべてのテストとすべてのコード品質チェックに合格することを要求することは、非常に制限的です。大規模なリファクタリングや複雑なリファクタリングでは、壊れている場合でもコミットすると便利なことがよくあります。
すべてのコミットが完璧である必要がありますか? Git などの分散バージョン管理システムを使用している場合、コミットはローカルに行われます。あなたがそれらを押すまで、それらはあなたにのみ影響を与えます。壊れたコミットは、壊れたプッシュほど重要ではありません。その場合でも、常にブランチで作業する必要があるため、ブランチが壊れていることも重要ではありません。重要なのは、ブランチをメイン コードにマージするときです。このときは、他の人がコードを壊すことを避けるために、厳しいテストを実行する必要があります。
ブランチ マージ レビュー プロセス (プル リクエストなど) 中に必須のコード品質チェックを実行し、自動化することをお勧めします。そうすれば全員のコードがチェックされます。
最も簡単な方法は、Rakefile に任意のチェックを追加することです。そうすれば、誰でもそれらを利用できるようになります。単一の rake チェックですべてのコード品質チェックを実行できます。必要に応じて、コミット前フックを追加してコミット前にチェックを実行できますが、それをプロジェクト全体に強制しないでください。これらのチェックを必要とするのは、ブランチのレビュー プロセスのみです。
Github などのシステムには、これらのチェックをレビュー プロセスに統合する独自の方法があり、それを使用するとよいでしょう。