如何使用所有声明的规则强制在 PhpStorm 中重新格式化整个文件?

Posted

技术标签:

【中文标题】如何使用所有声明的规则强制在 PhpStorm 中重新格式化整个文件?【英文标题】:How to force reformat whole file in PhpStorm using all declared rules? 【发布时间】:2018-03-13 14:38:19 【问题描述】:

如何强制 phpStorm 重新格式化代码但“从头开始”。问题似乎很愚蠢,但我注意到,例如,如果我手动进行一些更改,即使该更改违反了设置的规则,它也会保留这些更改。

例子:

我使用构造函数参数创建对象(重新格式化):

但是如果我将它粘贴到 File->Settings->Editor->Code Style->PHP 编辑器,它会像这样重新格式化它:

差异来自哪里?为什么重新格式化工具会忽略它自己的规则?如何强制它正确重新格式化?

【问题讨论】:

你试过这个:1)选择整个文件内容,然后点击重新格式化快捷方式? 2)或在项目视图面板中选择文件并从那里点击重新格式化(这样可以在多个文件/文件夹上调用它)。 3)除此之外——Code | Show Reformat File Dialog 并查看它是否选择了一些不需要的选项(例如“仅 VCS 更改文本”) 是的,我已经尝试过了:/ 我启用了“整个文件”和“优化导入”选项,所以在我看来它应该在这种情况下工作。 然后尝试“重置”您的代码样式规则。首先——试试默认的——看看你的代码片段是否被重新格式化。然后从默认创建新的代码样式条目(方案);应用所需的样式(至少对于有问题的元素)并尝试使用它——最小的更改只是为了看看它是否能按要求工作。如果一切顺利 - 完成设置其他规则。 这可能与您的右边距有关。在示例视图中,它可能比实际项目文件中的小得多。从您的屏幕截图中,我假设您总是希望每行一个数组项,如果正在包装声明。为此,请将“array initialiser”设置为“Chop down if long”,而不是“Wrap if long”。此外,请确保您设置的代码样式配置文件是您在重新格式化代码时实际使用的配置文件。 【参考方案1】:

在设置窗口示例中,右边距可能比实际项目中的要小得多。可以在通用代码样式设置中设置项目的右边距。


如果你去文件 -> 设置 -> 编辑器 -> 代码样式 -> PHP -> Wrapping and Braces,'Array intializer' 有四个选项:

不换行:不会更改您自己的格式。 如果过长则换行:如果行太长,将换行数组元素,但如果适合边距,则仍可能将多个数组项放在一行中。 Chop down if long:如果行太长,将包裹数组项。如果正在包装项目,则每个项目都放在自己的行中。 始终换行:始终将每个数组元素放在自己的行上,即使原始行不够长。

您现在可能已将其设置为 wrap if long。这意味着它确实被包装了,但几个数组项可能仍会在同一行上一起结束。只要适合就行了,符合代码风格。

您可能希望将其设置为如果较长则切碎,这意味着如果事情被包装,您将始终每行有一个项目。

【讨论】:

感谢您的回答 :) 我设置了它,也许它会完成这项工作。您知道是否可以强制应用格式规则? 强制应用是什么意思?只要您对代码进行格式化,任何格式化规则都会被应用,如果这就是您的意思的话。

以上是关于如何使用所有声明的规则强制在 PhpStorm 中重新格式化整个文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 swiftlint 声明时强制一个人使​​用数据类型的类型

phpstorm如何从桌面拖入插件

如何在我的数据库中强制执行数据完整性规则?

如何让 PhpStorm 理解 Ds\Map 键类型?

如何在 PhpStorm 中更新支持的 PHP 语言级别?

声明类型提示时,PhpStorm 是不是允许跳过 PHPDoc 标记?