我最近下载了最新版本的CodeSniffer(1.3.RC0)。我更喜欢这个版本而不是稳定版本(1.2.2),因为我想要“严重性”功能。
我修改了现有的Drupal标准软件包,以与此版本的CodeSniffer兼容并坚持我自己的严重性策略。当我从命令行运行phpcs时,我完全没有问题。它正确地嗅探代码,过滤严重性并且工作正常。
当我尝试使用subversion预提交钩子自动化嗅探时出现问题。似乎这个版本附带的phpcs-svn-pre-commit脚本根本不起作用。
我一步一步地按照http://pear.php.net/manual/en/package.php.php-codesniffer.svn-pre-commit.php中的指南,但是当我提交一个包含编码标准错误的文件(通过命令行执行phpcs和我的Drupal标准包检测到)时,subversion只是让文件传递并提交更改。
有没有人遇到同样的问题?
提前致谢。
已编辑:执行示例。
$ phpcs --standard=Drupal --severity=4 ak_gourmet.module
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/IcePHP.so' - /usr/lib/php5/20090626/IcePHP.so: cannot open shared object file: No such file or directory in Unknown on line 0
FILE: ...ce/trunk/httpdocs/sites/all/modules/custom/ak_gourmet/ak_gourmet.module
--------------------------------------------------------------------------------
FOUND 21 ERROR(S) AFFECTING 27 LINE(S)
--------------------------------------------------------------------------------
17 | ERROR | Concat operator must be surrounded by spaces. Found "...
| | '<p>'. "; expected "... . "
17 | ERROR | Concat operator must be surrounded by spaces. Found "...
| | .'</p>';..."; expected "... .;..."
40 | WARNING | A comma should follow the last multiline array item. Found:
| | MENU_NORMAL_ITEM
53 | WARNING | A comma should follow the last multiline array item. Found:
...
在subversion预提交钩子中添加了一行(正在执行):
# execute code sniffer with drupal standards
/usr/bin/scripts/phpcs-svn-pre-commit --standard=Drupal --severity=4 "$REPOS" -t "$TXN" >&2 || exit 1
提交错误的文件:
$ svn commit -m "Testing svn hook-precommit" ak_gourmet.module
Enviando ak_gourmet.module
Transmitiendo contenido de archivos .
Commit de la revisión 5814.