coding-style - 根据 CodeSniffer,为什么我的行尾仍然是错误的?

标签 coding-style phpstorm line-endings

我制作了一个 git 钩子(Hook),用于在提交前检查我的代码风格。它将暂存文件传递给 CodeSniffer。我使用 PSR-2 代码风格,这意味着换行符应该是 \n 即使在 Windows 上也是如此。然而,即使在更改 PhpStorm 设置和 git 设置后,它仍然给我错误,换行符是 \r\n。为什么会这样?

PhpStorm
使用正则表达式搜索 \r\n 不会返回实例,所以我认为问题出在 git 上。

enter image description here

.gitconfig

[core]
    autocrlf = false
    editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor
    eol = lf
[user]
    name = Thomas Moors
    email = thomas.moors@*****.nl
[merge]
    tool = kdiff3
[mergetool "kdiff3"]
    path = C:/Program Files (x86)/KDiff3/kdiff3.exe
[diff]
    guitool = kdiff3
[difftool "kdiff3"]
    path = C:/Program Files (x86)/KDiff3/kdiff3.exe

错误

enter image description here

转录:

FILE: ...\Thomas\Documents\example-live\laravel\app\Models\DoMdokUser.php
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
 1 | ERROR | [x] End of line character is invalid; expected "\n" but
   |       |     found "\r\n"
----------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

Time: 105ms; Memory: 4Mb

Fix the error before commit please

编辑:使用另一个编辑器 (n++) 问题确实似乎出在 phpstorm 上。替换\r\n 可以解决问题。那么为什么 PHPStorm 不能正常工作呢?

最佳答案

Searching for \r\n with regex on does not return instances, so I believe the problem to lie with git.

不一定是 git。

IDE (PhpStorm) 使用标准化行分隔符(即 \n/LF)将所有行存储在内存中,当您保存文件时,它会用实际行替换它们打开文件时检测到分隔符号。这也意味着,如果您碰巧在一个文件中有混合行结尾(例如 CRLFLF).. 保存后它将仅使用一种样式(例如仅 LF).

规范化的行结尾允许您以更简单的方式执行正则表达式搜索/替换——无需担心实际符号是什么。


现在 -- Code Style 设置页面 -- 正如您在字段下方的提示中看到的那样,它显示:“应用于新文件”。这意味着此设置不会以任何方式影响现有文件。

要更改特定现有文件的行尾: 打开文件并通过状态栏中的适当部分更改它.. 或通过 File |行分隔符

enter image description here

enter image description here


So why does PhpStorm not work properly?

它工作正常——你只是碰巧不知道如何更改行分隔符样式。

关于coding-style - 根据 CodeSniffer,为什么我的行尾仍然是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48422694/

相关文章:

phpstorm - 如何从 PHPStorm 中的代码检查中排除文件/文件夹?

java - Java中的回车\换行

sublimetext3 - 如何配置 sublime 以在保存时始终转换为 unix 行结尾?

text - 如何查看文件中使用了哪些行结束字符?

c - 在 vim 中使用 C 自动缩进空格?

javascript - Paul Irish 编写的代码 - 好的做法还是坏的做法?

python - __getattr__ 的不对称行为,新式与旧式类

c# - 抑制 TryParse 调用的静态代码分析警告 CA1806

ide - phpStorm 7 代码完成停止工作

php - 无法使用 Slim Framework 从 PUT 请求获得响应