是否可以配置PHP codeSniffer来忽略特定的错误类型?还是让它将某个错误视为警告?
这里有一个示例来演示该问题:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div>
<?php
echo getTabContent('Programming', 1, $numX, $numY);
if (isset($msg)) {
echo $msg;
}
?>
</div>
</body>
</html>
这就是PHP_CodeSniffer的输出:
> phpcs test.php -------------------------------------------------------------------------------- FOUND 2 ERROR(S) AND 1 WARNING(S) AFFECTING 3 LINE(S) -------------------------------------------------------------------------------- 1 | WARNING | Line exceeds 85 characters; contains 121 characters 9 | ERROR | Missing file doc comment 11 | ERROR | Line indented incorrectly; expected 0 spaces, found 4 --------------------------------------------------------------------------------
我遇到“行缩进不正确”错误的问题。我猜是因为我将PHP缩进与HTML缩进混合在一起。但这使它更具可读性,不是吗? (考虑到我现在没有转移到MVC框架的资源)。所以我想忽略它。
#1 楼
我找到了解决“错误地缩进行”错误的解决方案,但首先我要说的是Dragonmantank有一个优点-您不应该混合使用PHP和HTML。这是头痛的良方。但是,不幸的是,我认为混合使用PHP和HTML非常常见,尤其是在旧版软件中。假设我们使用的是
phpcs
默认编码标准(即PEAR标准),则最快,最脏的修复是删除相关的嗅探文件。在我使用Ubuntu的情况下,找到PEAR标准的位置,在这里:已执行:> cd /usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/WhiteSpace
作业完成-现在将不检查缩进并且不会出现“行缩进不正确”错误(并且不会标准,不会达到如此高的质量!)。
以上解决方案非常业余-更干净的解决方案是创建一个新的编码标准,该标准使用除PEAR标准之外的所有PEAR标准您的樱桃采摘的定制。这是非常快的操作。以下是使用
ScopeIndentSniff.php
和getIncludedSniffs()
以及一些getExcludedSniffs()
命名约定的方法:通过使用phpcs
标志调用phpcs
,测试新的自定义编码标准。例如:> sudo mv ScopeIndentSniff.php ScopeIndentSniff.php.bk
一旦运行,您可以将新标准设置为默认值,这意味着您不必在每次使用
--standard
时都键入--standard
标志。 :Go to the directory where the phpcs coding standards are defined:
> cd /usr/share/php/PHP/CodeSniffer/Standards
Create a new directory for your new standard:
> sudo mkdir PEARish
> cd PEARish
Create your new standard by saving the following in the file:
> sudo emacs PEARishCodingStandard.php
<?php
class PHP_CodeSniffer_Standards_PEARish_PEARishCodingStandard extends PHP_CodeSniffer_Standards_CodingStandard
{
public function getIncludedSniffs()
{
return array('PEAR');
}
public function getExcludedSniffs()
{
return array('PEAR/Sniffs/WhiteSpace/ScopeIndentSniff.php');
}
}
?>
有关更多信息,请参见phpcs手册。
评论
这真的很方便-我用这个答案来消除“类必须在至少一个级别的命名空间中”类出现的错误以及驼峰式案例函数命名错误。我正在尽可能多地使用PSR2,但在编辑Magento网站时,我无权检查并重命名每个功能并整理命名空间。
–戴夫儿童
13年12月31日在16:49
#2 楼
在将PHP代码与HTML混合在一起的情况下,运行PHPCS会遇到很多问题。仅当您解析纯PHP脚本时,PHPCS才真正有用。内置的编码标准是基于纯PHP而不是混合的PHP / HTML构建的。一种选择是建立自己的自定义标准,而改用它。定制标准会考虑到代码的混合,但是编写起来可能很麻烦。
另一种选择是使用模板系统,因为您说过不想迁移到一个框架。 Smarty和Twig都可以在MVC框架之外使用。移至其中之一,然后让PHPCS仅解析.PHP文件,而不解析模板文件。
评论
这与IMO有关的编程问题有点过多。.因为它是关于“ LINT”之类的实用程序,因此铁杆程序员(不一定是网站管理员)最感兴趣。但这是很好的要求和格式,因此我们可以暂时保留它。关于第1行警告:我可以建议使用HTML5 DOCTYPE吗?
感谢您的反馈杰夫-我很高兴提出这一建议。当我创建问题:-)时,我可能应该意识到没有PHP标记时。
@luiscubal-他,很好的建议;喜欢你的想法;-)