如何设置在各种 IDE 中使用的默认 linter

Posted

技术标签:

【中文标题】如何设置在各种 IDE 中使用的默认 linter【英文标题】:How to set a default linter to be used across various IDEs 【发布时间】:2021-09-02 13:48:00 【问题描述】:

这可能非常简单,但我不知道如何用这个词来有效地谷歌。

我希望为我的 python/flask/javascript 项目设置默认代码样式/linter。我有人使用不同的 IDE,所以有时在 VSCode 上格式良好的代码在 PyCharm 上会被标记不同。

是否有某种我可以创建的设置文件会导致任何 IDE 读取它并使用设置的 linter?我四处搜索,只发现人们通过他们的 IDE 设置他们的 linter

我希望将 PEP8 用于 python,但还没有决定使用 JavaScript linter。

【问题讨论】:

您可以尝试 editorconfig,但我认为您只需要告诉您的团队使用什么 linter,然后在存储库中提供 linting 规则。 editorconfig.org 【参考方案1】:

我是否可以创建某种设置文件以使任何 IDE 读取它并使用设置的 linter?

不,没有一种解决方案可以涵盖所有 IDE 和所有 linter。不过,最流行的 lint 工具确实为最流行的编辑器提供了跨平台说明,描述了如何充分利用它们。

标准化脚本

可以指定脚本来执行假定每个人都拥有的特定共享 linter;例如,一个 Javascript 项目的package.json 可能有一个lint script that runs eslint 和installs eslint in devDependencies,一个项目特定的eslint config file 可以提交给版本控制,所以每个人都有相同的配置。 (对于测试框架、格式化实用程序或其他任何东西也是如此。)

如果每个人的 IDE(或本地构建链,或预提交挂钩等)都配置为执行 npm run lintmake lint 或类似的,而不是某些本机/专有工具,那么您已成功指定默认值。这些选择被签入源代码控制,并保持一致并可供所有人使用;挑战在于确保其他开发人员的环境尊重此默认设置。

标准化插件和插件设置

一些 IDE 扩展,例如 ESLint for VSCode (dbaeumer.vscode-eslint),会查看您的环境并自动为您运行适当的工具;有些在键入、保存、构建或提交时操作。其中一些可能不使用您的包/模块/项目元数据,而是寻找工具及其配置的存在(例如,PATH 或 node_modules 中的eslint 和项目目录中的.eslint.json 或类似内容)。通过使用您的代码such as .vscode/extensions.json 提交 IDE 扩展配置,一些不相关的 IDE 可以在可自定义的编辑器及其插件的帮助下共享它们的 linting 行为。

请注意,转换工具(例如 Python 的 black)属于稍微不同的类别;许多 linter 可以配置为自动更正某些问题,其行为几乎类似于格式化程序,但您可能在问题中将格式化和 linting 混为一谈,因此请注意区别。

附:很长一段时间以来,可重现和可预测的开发环境一直是人们普遍关注的问题,如今确实有成百上千的解决方案。一些团队仍然共享开发虚拟机/容器 à la vagrant 和 docker;一些团队使用云 IDE 或文件共享将规定的设置同步到每台开发机器;并且大多数人维护一个 wiki 文章或 README 文件,记录设置自己的环境以符合团队期望的步骤。

【讨论】:

以上是关于如何设置在各种 IDE 中使用的默认 linter的主要内容,如果未能解决你的问题,请参考以下文章

如何将 pep8 linter 设置为接受 2 个空格缩进?

如何在 Jupyter Notebooks 中使用 Pylint 或其他 linter?

各种IDE相关设置

VSCode Linter ES6 ES7 Babel linter

如何删除 Sublime Linter 中的弹出警告?

在BIOS中如何设置出串行总线控制器???紧急求助!!!!!!!!!!