[英]Svn pre-commit hook for checkstyle
這是我當前的checkstyle shell腳本。 如果我在TRUNK上提交但不在分支上提交,則可以正常工作。 我真的不明白為什么它不起作用。 有人可以幫幫我嗎?
#!/bin/sh
###################################################
#
# Verify Checkstyle
#
###################################################
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
JAVA=/opt/ibm/java2-i386-50/bin/java
CHECKSTYLE=/usr/local/checkstyle/checkstyle-all-5.1.jar
TMPDIR=/tmp/$TXN
REPORT=/tmp/$TXN/report
CHECKSTYLE_CONFIG=/usr/local/checkstyle/checkstyle.xml
CHANGED=`$SVNLOOK changed -t "$TXN" "$REPOS" | grep -v "^D" | awk '{print $2}'`
mkdir -p $TMPDIR
for LINE in $CHANGED ; do
FILE=`echo $LINE | egrep -v Test\\.java$ | egrep -v \\/src\\/test\\/ | egrep -v \\/js\\/ext`
if [ -n "$FILE" ] ; then
DIRNAME=`dirname $FILE`
mkdir -p $TMPDIR/$DIRNAME
$SVNLOOK cat $REPOS --transaction $TXN $FILE > $TMPDIR/$FILE
fi
done
$JAVA -jar $CHECKSTYLE -c $CHECKSTYLE_CONFIG -r $TMPDIR > $TMPDIR/tmpfile.checkstyle
X=$?
if [ $X -ne 0 ] ; then
cat $TMPDIR/tmpfile.checkstyle > /dev/stderr
rm -Rf $TMPDIR
exit 1
fi
rm -Rf $TMPDIR
exit 0
謝謝!
忠告:不要將此作為預先提交的腳本。
checkstyle
捕獲了一些不是問題的東西,或者開發人員寫的方式實際上比checkstyle
堅持的應該更清楚,更容易理解,該怎么辦? 當您使用諸如checkstyle
或findbugs
類的東西時,您必須了解您會得到一些誤報。 更好的方法是使用像Jenkins這樣的連續構建引擎。 可以將Jenkins設置為在每次提交時自動啟動構建。 詹金斯可以:
您不必使用詹金斯。 哈德森仍然在那里。 CruiseControl也是如此,您可以在那里使用TeamCity,Bamboo和許多其他連續構建系統。 我喜歡Jenkins,因為開發非常活躍,而且設置非常簡單。 我花了30分鍾左右的時間下載並開始我的第一份工作。
我知道您問過您的預提交鈎子,但我不想聽起來像個推銷員(詹金斯是自由開放的源代碼,並且我與項目沒有任何聯系),但是像檢查checkstyle
一樣復雜。提交前的鈎子正在請求麻煩。 使用連續構建服務器只是解決此問題的更好方法。
一個提示。
嘗試比較目錄結構,然后創建臨時目錄(刪除“ rm -Rf $ TMPDIR”)。
也許您在主干和分支之間有區別,例如:
中繼線:/tmp/12/code/file.java
分支:/tmp/br1/12/code/file.java
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.