9

JavaでGitprecommitフックを作成する必要があります。これにより、開発者がコミットしたコードが、実際にコミットする前に特定のEclipseコードフォーマッターに従ってフォーマットされているかどうかを確認します。そうでない場合は、コミットを拒否します。Javaでprecommitフックを書くことは可能ですか?

4

3 に答える 3

7

アイデアは、順番にあなたのJavaプログラムを呼び出すスクリプトを呼び出すことです(フォーマットをチェックします)。

Java を呼び出すpython で書かれた例をここで見ることができます。

try:
    # call checkstyle and print output
    print call(['java', '-jar', checkstyle, '-c', checkstyle_config, '-r', tempdir])
except subprocess.CalledProcessError, ex:
    print ex.output  # print checkstyle messages
    exit(1)
finally:
    # remove temporary directory
    shutil.rmtree(tempdir)

この別の例ではant、Ant スクリプトを実行するために を直接呼び出します (次に、Java JUnit テスト スイートを呼び出します)。

#!/bin/sh

# Run the test suite.
# It will exit with 0 if it everything compiled and tested fine.
ant test
if [ $? -eq 0 ]; then
  exit 0
else
  echo "Building your project or running the tests failed."
  echo "Aborting the commit. Run with --no-verify to ignore."
  exit 1
fi
于 2012-11-06T07:41:29.020 に答える
1

適切に構成されたインタープリター(bash、python、perl)などを使用して、シェルが理解できる任意の言語でフックを記述できます。

しかし、JavaコードフォーマッタをJavaで記述し、pre-commitフックから呼び出してみませんか。

于 2012-11-06T07:27:11.623 に答える