是否存在无默认行为的代码格式化工具

2022-08-15 18:43:00 +08:00
 GPLer

不可否认,代码格式化工具非常有用,但例如 prettier 这样的代码格式化工具,在规范代码的同时会强制你做出取舍,比如在一个 Javascript 项目里包裹字符串只能用单引号或者只能用双引号,但可能我只想要统一缩进,结果它把单双引号也统一了。

那么是否存在一种代码格式化工具,可以最小程度的修改代码,以满足高可读性的要求呢?

简单来说,该工具应满足以下条件:

  1. 可以关闭所有规则,即该情况下执行前后代码无变化
  2. 可以选择性的开启某些规则,规则与规则之间无依赖关系,以满足渐进式的规则配置
  3. 可以通过写插件或者写脚本实现非常精确的配置,而不只是全局的开关
2068 次点击
所在节点    程序员
18 条回复
renmu
2022-08-15 18:44:36 +08:00
1 ,2 你可以设置 prettier 达成
Jooooooooo
2022-08-15 18:45:26 +08:00
idea 应该就有这种功能
GPLer
2022-08-15 19:01:59 +08:00
@renmu 第一条我参考 ![Is there a way to ignore a specific rule? [Possible Feature] #9171]( https://github.com/prettier/prettier/issues/9171) 试了下,像 `singleQuote` 的配置项,配置成 'never' 后确实不生效的,也就是说是可行的,还是我太急躁了,感谢大佬。
至于第二条,其实 prettier 好像本来就是这样的
第三条估计 prettier 也能做到,但是插件的方式还是挺麻烦的,能做到一、二也够用了。
GPLer
2022-08-15 21:38:45 +08:00
@GPLer 经测试,never 并不是生效了,而是配置文件中出现了意料之外的值,以至于格式化程序没有执行。。。
参考 https://stackoverflow.com/questions/63813336/how-to-ignore-specific-rules-with-prettier
所以说 prettier 似乎并不能满足要求。
iamqida
2022-08-15 21:39:21 +08:00
jetbrains 家的 ide 都可以做到
GPLer
2022-08-15 21:40:09 +08:00
@renmu 但 prettier 应该不能关闭某些规则,还是不能满足要求。
zhuweiyou
2022-08-15 21:48:26 +08:00
你在一个项目或者一个文件里,用不同的风格, 是不是你的不合理呢? 感觉除了老项目不应该格式化以外, 新项目应该统一标准.
wu67
2022-08-15 21:52:05 +08:00
其实 jb 家的 ide 可以处理这个场景. 编辑器可以按语音配置风格, 非常详细, 几乎开箱即用, 你想要自己配, 也可以微调, 设置窗口右侧有风格示例.

prettier 其实也可以大体上的设置, 但是不算开箱即用(个人认为). 折腾半天还需要配合 eslint 修一遍才行(个人做法是 prettier 格式化一边, 然后 eslint 修一遍), 这样才能符合我对代码风格的期望. 仅 vue 场景, react 未知.

现在不怎么搞 idea 了(其实是穷得不想买), 凑合着用 vsc, 用是能用, 就是各种不方便

可以看看这篇文章 https://blog.isayme.org/posts/issues-50/ 这是我以前配置 vsc 时参考的文章之一
molvqingtai
2022-08-15 22:00:39 +08:00
你这不是说的 eslint 吗
Nugine0
2022-08-15 22:44:58 +08:00
试试 dprint
placeholder
2022-08-15 22:49:17 +08:00
没有,不用找了,我找了好久了。
liulangyude
2022-08-15 22:56:37 +08:00
@wu67 破解啊,现在网上教程一大堆,正版主义者的话当我没说
wu67
2022-08-15 23:36:20 +08:00
@liulangyude hhh, 很快就会有一堆人来批你了...在这网站正版是政治正确. 另外我就是懒得折腾了, 基本每次升级都会失效
mingl0280
2022-08-15 23:44:12 +08:00
Visual Studio 就行了呗。
dfkjgklfdjg
2022-08-16 08:34:32 +08:00
所有的代码格式化工具都会提供配置项的吧....
如果只需要某几项,可以单独自己搞一个风格,然后只检查自己配置的项目的。

可以放到编辑器的配置项里面全局使用,也可以搞到项目目录下只检查项目内的编码风格。
Vaspike
2022-08-16 08:48:35 +08:00
@liulangyude #12
是的,我就是正版主义者,我来了
一千多买一年用来吃饭的家伙,贵么
人人都盗版,Jetbrains 倒闭指日可待
另外,OP 说的功能 JB 系 IDE 都可以做到
yangzzzzzz
2022-08-16 09:58:38 +08:00
eslint 改一下格式化风格应该可以满足,airbnb 、prettier 、还有标准的风格,基于这些自己在修改参数
secondwtq
2022-08-16 19:58:07 +08:00
可以说存在,也可以说不存在。

对于一个黑盒的软件成品来说,“无默认行为”by definition 是不可能的,因为这个软件设计的“功能”就是“行为”的一部分。“无默认行为”等于“无默认功能”,追求完全的自定义,最后都会扩大化到从 mian 函数重写整个软件。

另一方面,很多软件是可以拿到源代码并自己编译的,可以不必“从 mian 函数重写整个软件”,而是在已有源代码上魔改,从这个角度上来讲这些软件确实“无默认行为”,毕竟你可以通过源码的方式修改所有行为。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/873038

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX