【发布时间】:2012-12-16 08:38:54
【问题描述】:
我正在尝试在 SVN 中构建一个预提交脚本,并且我想在 仅修改后的行(而不是整个文件)上运行 PHP_CodeSniffer。到目前为止,我有这个脚本:
#!/bin/sh
REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
grep "[a-zA-Z0-9]" > /dev/null || exit 1
# Check for code validation before commiting the script using PHP_CodeSniffer
/tmp/pear/download/PHP_CodeSniffer-1.4.3/scripts/phpcs-svn-pre-commit "$REPOS" -t "$TXN" >&2 || exit 1
# All checks passed, so allow the commit.
exit 0
【问题讨论】:
-
您也许应该概述一下到目前为止您所尝试的问题是什么。 +1 用于构建它并询问;)
-
phpcs 获取文件,将其解析为 AST 并对其执行分析。所以在检查步骤 - 没有可用的原始行号。我几乎不怀疑这是可能的
-
就像@zerkms 所说,必须解析整个文件,但可以检查是否有任何更改的行在包含cs 错误的行集中。
-
虽然内容嗅探器确实会检查“行”,但它无法知道运行时实际发生了什么变化。为什么不在应用更改之前比较文件的输出,然后再应用?它很快,它很脏,而且它可能会起作用......
-
不,我不会为你做你的工作。
标签: php svn pre-commit-hook codesniffer