onl*_*mas 2 coding-style line-endings phpstorm
我做了一个 git 钩子,在提交之前检查我的代码风格。它将暂存文件传递给 CodeSniffer。我使用 PSR-2 代码风格,这意味着换行符\n在 Windows 上应该是偶数。但是,即使在更改 PhpStorm 设置和 git 设置之后,它仍然给我一个错误,即换行符是\r\n. 为什么会发生这种情况?
PhpStorm使用正则表达式
搜索\r\n不会返回实例,所以我认为问题出在 git 上。
.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
Run Code Online (Sandbox Code Playgroud)
错误
转录:
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
Run Code Online (Sandbox Code Playgroud)
编辑:使用另一个编辑器 (n++) 问题似乎确实出在 phpstorm 上。替换 \r\n 可以解决问题。那么为什么 PHPStorm 不能正常工作呢?
\r\n使用正则表达式搜索不会返回实例,所以我认为问题出在 git 上。
不一定使用 git。
IDE (PhpStorm) 使用规范化的行分隔符(即\n/ )将所有行存储在内存中,LF当您保存文件时,它会将它们替换为文件打开时检测到的实际行分隔符。这也意味着,如果您碰巧在一个文件中混合了行尾(例如,两者CRLF和LF).. 保存后它将仅使用一种样式(例如,仅LF)。
规范化行尾允许您以更简单的方式执行正则表达式搜索/替换——无需担心实际符号是什么。
现在 -Code Style设置页面 - 正如您在该字段下方的提示中看到的那样,它显示:“应用于新文件”。这意味着此设置不会以任何方式影响现有文件。
要更改特定现有文件的行尾:打开文件并通过状态栏中的相应部分更改它 .. 或通过File | Line Separators
那么为什么 PhpStorm 不能正常工作呢?
它工作正常——你只是碰巧不知道如何更改行分隔符样式。