2012-04-24 8 views
1

特定のJavaクラスがコミットされるかどうかをチェックしたいと思います。もしそうなら、私はserialVersionUIDが特定のクラスのソース内で変更されているかどうかをチェックしたいと思います(新しい値と古い値)。svn pre-commitフックチェックjavaソース

どうすればよいですか?任意の例PLS。

よろしく

+0

あなたがチェックする方法、SVNフックを追加する方法を求めていますserialVersionUID、またはその両方のために? –

+0

正しい方法は、そのソースをコンパイルしてから、バイトコードから 'serialVersionUID'フィールドを読み込むことです。これはほとんど間違いではありませんので、コードの形式について仮定した場合、正規表現を使用することができます。 Javaのレクサー/パーサーがなければ、ソースが受け取っていない 'serialVersionUID'宣言を常に含んでいる可能性があることを覚えておいてください。 –

+0

Greg Kopff - 両方 – zmeda

答えて

2

あなたはSVNフックの設定に関するウェブ上の例をたくさん見つけることができるはずですが - ここrelevant chapter from the SVN bookです。 フックスクリプトまでスクロールします。

検出については、serialVersionUIDと似ています。ソースコードを解析する場合、間違って検出することがあります。しかし、問題のソースコードは、時間の99%で動作するように単純である可能性があります。間違っていることの影響があまりにも悲惨ではないかもしれません。あなただけがその答えを知っています。

だから、それを確認する本当に簡単な方法(のLinux/UNIX/MacのOS環境を想定した)は、「serialVersionUIDの」を探すためにgrepを使用するシェルスクリプトを使用することです。しかし、私はすぐにこれが偽陽性を検出する方法を考えることができます。内部クラスが宣言すると、単純なgrepがそれを包含クラスに対して検出します(ファイルを解析していないので、内部のクラス構造)。

+0

まず、内部クラスが定義されていないと仮定して簡単な解決策を試してみましょう。私はすぐに解決策を投稿します。どうも – zmeda

0

私はむしろjenkins のような継続的な統合サーバーを使用してのもの を確認するジョブを作成し、ものが

を発生したときに電子メールを送信します:)

関連する問題