如何忽略PHP CodeSniffer中特定编码的典型错误

我们有一个PHP 5互联网应用程序,我们目前正在审查PHP CodeSniffer,以确定是否强制代码标准提高了代码质量,而不会产生太多的挫折感。 如果看起来很棒,我们肯定会添加一个SVN预提交钩子,以确保dev分支上的所有新文档都没有编码典型的气味。

存在设置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结构 )。 所以我肯定会忽略它。

0
2019-05-04 17:15:11
资源 分享
答案: 2

你可能会因为你的PHP代码与HTML混合而运行PHPCS时遇到很多问题。 在解析纯PHP手稿时,PHPCS实际上很有价值。 构造的编码标准是围绕纯PHP构建的,而不是PHP / HTML的组合。

一种替代方案当然是构建您自己的个性化标准,并使用它。 个性化标准肯定会考虑代码的混合,但写作可能会让人感到不舒服

其他各种替代方案是使用模板系统,因为您声称不打算重新定位到结构。 Smarty的枝条都可以在MVC结构之外使用。 重新定位到其中,之后PHPCS只解析.PHP文件,而不是布局文件。

0
2019-05-08 22:28:12
资源

我找到了摆脱“摆脱”的补救措施 线缩进不准确 “首先我需要提出错误 dragonmantank 有一个很好的因素 - 你不应该混合PHP和HTML。 这是一道令人沮丧的菜。 尽管如此,不幸的是我认为混合PHP和HTML在遗产软件程序中通常是特别常用的。

我们正在使用phpcs默认编码标准(标准)的最快和最糟糕的解决方案是删除相关的Sniff文档。 找到PEAR标准的区域,对我来说,使用Ubuntu的,它位于:

> cd /usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/WhiteSpace

重命名ScopeIndentSniff.php文档,以便检查代码印象的气味肯定不会再实现:

> sudo mv ScopeIndentSniff.php ScopeIndentSniff.php.bk

任务完成 - 目前不会检查印象,也“ 线缩进不准确 “不会发生错误( 而且你的代码也不典型,也不会是如此优秀的品质! )。


上述补救措施相当业余 - 更清晰的补救措施是创建一个新的编码标准,该标准使用每个PEAR标准,但樱桃选择的定制除外。 这真的很快。 下面是如何使用getIncludedSniffs()getExcludedSniffs()以及一些phpcs调用约定:

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');
    }
}
?>

通过使用--standard标志来构建phpcs来测试您的新定制编码。 举个例子 :

> phpcs --standard=PEARish Test.php

一旦它运行,您可以将新标准设置为默认值,这表示每次使用phpcs时都不需要键入--standard标志:

> sudo phpcs --config-set default_standard PEARish

有关其他信息,请参阅phpcs手册

0
2019-05-08 20:47:32
资源