12

我正在尝试在 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
4

5 回答 5

4

2017 年,CodeSniffer 3.0.0发布后,新增了--cache选项

或者您可以使用默认情况下执行此操作的EasyCodingStandard

于 2017-05-21T22:51:25.323 回答
0

从概念上讲,它没有意义。

phpcs 需要知道洞的上下文才能正确分析。

仅扫描更改的行将删除上下文。

于 2013-03-08T15:51:00.480 回答
0

有一个项目lint-diffs可以在差异输出文件上运行任何 linter。

phpcs --report=emacs作为命令使用。正则表达式可以与示例配置相同。

于 2019-12-16T22:46:06.037 回答
-1

以下是在 Phabricator 的工具 Arcanist 中的操作方式:

  1. 它在每个更改的文件上运行 php 代码嗅探器并收集所有错误
  2. 通过行号限制这些错误,其中只允许在此提交中更改的行号

这当然不会涵盖某些特定情况,当 LineA 的更改导致 LineB 的错误时。

于 2014-12-10T09:31:46.877 回答
-3

我知道这个话题已经过时了。我构建了自己的解决方案来实现这一目标(仅扫描最近更改的行)。这还为时过早,但有效

https://github.com/ayeo/sniffer

于 2017-04-15T18:26:33.480 回答