gpt4 book ai didi

用于 checkstyle 的 Svn 预提交 Hook

转载 作者:行者123 更新时间:2023-12-02 22:44:07 24 4
gpt4 key购买 nike

这是我当前的 checkstyle shell 脚本。如果我在 TRUNK 上提交但在 Branch 上不提交,它工作正常。我真的不明白为什么它不起作用。有人可以帮帮我吗?

#!/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

谢谢!

最佳答案

忠告:不要将其设为预提交脚本。

  • 任何预提交脚本都会暂停提交直到完成。如果我 checkin 十几个文件,这个脚本运行需要多长时间?当我第一次进入计算领域时,第二秒的响应时间被认为是可以接受的。现在,如果您在几秒钟内没有得到回应,人们就会提示。
  • 如果 checkstyle 捕获了一些不是问题的东西,或者开发人员编写它的方式实际上比 checkstyle 坚持应该是?当您使用 checkstylefindbugs 之类的东西时,您必须了解您会得到一些误报。

更好的方法是使用持续构建引擎,如 Jenkins . Jenkins 可以设置为在每次提交时自动启动构建。 Jenkins 可以:

  • 自动存储构建结果。然后,您实际上可以直接从 Jenkins 发布代码以供测试和您的客户使用。毕竟,您知道您测试过的相同 jar/ear/war 文件与您的客户将获得的相同。
  • 自动运行各种测试,包括:
    • 方格样式
    • 查找错误
    • 科尔贝图拉
    • 项目经理
    • JUnit
    • 检查内置警告
    • 还有几十个人
  • Jenkins 将整个构建输出、所有保存的工件和所有测试保存在一个漂亮且易于查看的网页中,任何用户都可以访问。
  • Jenkins 可以集成到各种问题跟踪工具中,因此您可以查看 Jenkins 构建的特定问题涉及的内容。

您不必使用 Jenkins。 hudson 还在。 CruiseControl 也是如此,您可以使用 TeamCity、Bamboo 和许多其他持续构建系统。我喜欢 Jenkins,因为开发非常活跃,而且设置起来非常简单。在我第一次听说它时,我花了大约 30 分钟下载它并运行我的第一份工作。

我知道你问过你的 pre-commit hook,我不想听起来像个推销员(Jenkins 是免费和开源的,我与这个项目没有关系),但是做一些像checkstyle 检查预提交 Hook 是否自找麻烦。使用持续构建服务器只是处理此问题的更好方法。

关于用于 checkstyle 的 Svn 预提交 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10315970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com