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

问题描述

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

我希望为我的 python/flask/JavaScript 项目设置代码样式/linter。我让人们使用不同的 IDE,因此有时在 VSCode 上格式良好的代码在 PyCharm 上被标记为不同。

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

我希望将 PEP8 用于 Python,但尚未决定使用 JavaScript linter。

解决方法

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

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

标准化脚本

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

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

标准化插件和插件设置

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

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

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