更改Dart格式化风格

4
好的,标题可能有点误导性,这只是我的最终目标。
所以,我刚开始接触Dart世界。到目前为止,它似乎很棒,但我最大的问题是愚蠢的默认格式化程序。特别是你不能摆脱它。我主要使用WebStorm,因为这些东西通常可以自定义。但我没有找到任何改变dart格式化程序的方法(请参见附加的截图)。Dart格式化程序强制实施2个空格缩进和许多其他令人恼火的代码样式,这些样式只能通过它来强制执行。
是否可能以某种方式更改配置选项或完全更改格式化程序?如果必须对源进行更改,则可以做到这一点,或者只需玩一些WebStorm配置也可以,我只想更改这个。
谢谢
如下是截图:As you can see, There is no way to configure anything other than the line length
3个回答

2
你无法更改dartfmt使用的格式样式,这是一个非常有意识的设计决策。如果您查看 dart_style包的FAQ,您会在“为什么不能配置它?”部分中找到以下内容:

出于设计考虑,格式化程序仅支持很少的可调整设置。如果您查看上面的优先级列表,您将看到可配置性直接违反了前两个优先级,并且在第三个优先级中有一半(您必须考虑它,但不适用它)。

这可能令人惊讶,但 dartfmt 的目标不是自动使您喜欢的代码外观。它的目标是使每个 Dart 代码都看起来相同。 dartfmt 的主要目标是提高 Dart 生态系统的质量。这间接地也提高了每个Dart开发人员的生活 - 您可以获得更多可重用的代码,更一致的代码,更容易阅读和贡献其他人的代码等。但这是以个人偏好为代价的。


4
谢谢,我知道格式化程序是故意不可配置的,但我想知道是否有其他替代方案可以使用? - J-Cake

2
Dart格式化程序遵循“analysis_options.yaml”文件中规定的linter样式规则。可以在这里找到该文件的描述。完整的linter规则列表可在这里找到。
您还可以订阅常见的样式指南,例如pedantic,这是Google内部使用的样式指南包,或者lint,另一个启用所有不矛盾或主观规则的包。
话虽如此,我认为您无法更改诸如两个空格缩进之类的内容。 Dartfmt强制执行某些样式选择,以便尽可能地保持Dart代码库之间的样式一致性。

因此,代码检查工具提供了一些灵活性,但并不太多。这与ESLint或Prettier所能做的远不相同。 - J-Cake
1
@JacobSchneider 像 ESLint 和 Prettier 这样的工具非常灵活,因为 JavaScript 没有任何一个可以说“这就是 JavaScript 风格”的单一风格。Google 从一开始就想解决这个问题,这就是为什么他们使 dartfmt 如此严格,并且限制了风格的可定制性。 - Abion47
我只想在每个大括号之前和之后换行,无论它是开放还是关闭。有没有解决方案? - Soorej Babu
1
@soorejbabu 不,没有。格式化程序在其实现中是严格的,并且没有定制选项。这是有意为之的和设计上的。 格式化程序的整个目的是强制执行特定的代码样式,以便Dart代码无论在哪里找到都看起来相似,这大大有助于帮助人们阅读彼此的代码。 是的,它是有偏见的,是的,人们会不同意这种方法,但这就是事实。 - Abion47

0

看了源代码后,发现有几个故意隐藏的选项可以用于Dart格式化,包括--line-length--indentation

示例:

dart format --line-length 120 --indentation 4

我不确定这是否解决了你的问题,我的使用案例更多与持续集成相关。

哇,说实话,我完全忘记了这个问题。我已经完全放弃了Dart,主要是因为这些原因。然而,在我最近对操作系统基础设施的理解上取得的进展中,我觉得这可能会解决原始问题,也许不是直接解决,但肯定能达到一个可操作的点,至少可以实现期望的结果。谢谢您,先生。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接