gpt4 book ai didi

php - 修复 phpcs 中的 "Line indented incorrectly"错误

转载 作者:行者123 更新时间:2023-12-02 18:05:38 35 4
gpt4 key购买 nike

我正在使用 phpcs 验证 PHP 代码使用:

phpcs --standard=PSR1 .

它产生 this output其中散布着:

FILE: /home/travis/build/fulldecent/cameralife/setup/upgrade/upgrade.php
--------------------------------------------------------------------------------
FOUND 7 ERROR(S) AND 1 WARNING(S) AFFECTING 8 LINE(S)
--------------------------------------------------------------------------------
34 | ERROR | Line indented incorrectly; expected 4 spaces, found 8
...

我尝试使用 php-cs-fixer 修复此问题,但是它们不支持词法分析和正确设置缩进,因此它只能转换制表符。请参阅:https://github.com/fabpot/PHP-CS-Fixer/issues/229

由于 phpcs 自信地告诉我需要多少个空格,有什么办法可以纠正整个项目所需的缩进?

最佳答案

首先,最好知道这些缩进错误来自 PSR2 运行而不是 PSR1 运行。 PSR2 包含 PSR1 的所有检查,因此您实际上不需要运行 2 次 PHPCS。如果您想同时遵守两者,则可以使用 --standard=PSR2。

至于修复,当前 alpha 版本的 PHP_CodeSniffer 包含一个名为 phpcbf 的脚本,它可以自动为您修复错误,包括缩进问题。当我在您的一个文件 (setup/upgrade/upgrade.php) 上运行 PHP_CodeSniffer 的 alpha 版本时,我得到了 PSR2 的此报告:

phpcs --standard=PSR2 /path/to/file
--------------------------------------------------------------------------------
FOUND 8 ERRORS AND 1 WARNING AFFECTING 10 LINES
--------------------------------------------------------------------------------
34 | ERROR | [x] Line indented incorrectly; expected 4 spaces, found 8
36 | ERROR | [x] Line indented incorrectly; expected 8 spaces, found 12
40 | ERROR | [x] Line indented incorrectly; expected 4 spaces, found 8
43 | ERROR | [x] Line indented incorrectly; expected 8 spaces, found 12
47 | ERROR | [x] Line indented incorrectly; expected 8 spaces, found 12
51 | ERROR | [x] Line indented incorrectly; expected 12 spaces, found 16
52 | WARNING | [ ] Line exceeds 120 characters; contains 200 characters
55 | ERROR | [x] Line indented incorrectly; expected 4 spaces, found 8
60 | ERROR | [x] A closing tag is not permitted at the end of a PHP file
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 8 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

如果我随后使用新的差异报告运行 PHPCS,它将显示需要对文件进行哪些更改,包括以下代码段:

phpcs --standard=PSR2 --report=diff /path/to/file
@@ -31,32 +31,29 @@
if ($installed_version >= $latest_version) {
echo "<p style=\"color:green\">No upgrade is necessary. Return to the <a href=\"../../\">main page</a>.</p>";
} else {
- foreach (glob(dirname(__FILE__) . '/*.inc') as $script) {
- $a = basename($script, '.inc');
- if (is_numeric($a) && ($a > $installed_version) && ($a <= $latest_version)) {
- $scripts[] = $a;
- }
+ foreach (glob(dirname(__FILE__) . '/*.inc') as $script) {
+ $a = basename($script, '.inc');
+ if (is_numeric($a) && ($a > $installed_version) && ($a <= $latest_version)) {
+ $scripts[] = $a;
}

如果您希望自动修复该文件,请使用 phpcbf 命令而不是 phpcs 命令:

phpcbf --standard=PSR2 /path/to/file
Patched 1 files
Time: 78 ms, Memory: 4.50Mb

您可以在这里阅读更多相关信息:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Fixing-Errors-Automatically

这是您想要获得的版本:https://github.com/squizlabs/PHP_CodeSniffer/releases/tag/2.0.0a1

或者您可以克隆 Github 存储库并 checkout phpcs-fixer 分支以获取最新的代码。然后,您可以从克隆运行 phpcs 和 phpcbf,而无需通过 Composer 的 PEAR 安装它们:

git clone -b phpcs-fixer git://github.com/squizlabs/PHP_CodeSniffer.git
cd PHP_CodeSniffer
php scripts/phpcs ...
php scripts/phpcbf ...

关于php - 修复 phpcs 中的 "Line indented incorrectly"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22600809/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com