Eslint 如何只更改代码行

Rai*_*aif 16 git continuous-integration github eslint

我需要一种方法来仅在分支上已更改的代码行或块上运行 ESLint。我们的想法是,我们有一个庞大的旧代码库,并且我们希望至少在未来强制执行 ESLint 规则。

我在 CI 中实现了它,对 PR 中更改的所有文件进行了检查。但是人们在接触文件中的一行时突然必须修复 77 个 ESLint 错误。

就我个人而言,我一点也不担心他们,但他们比我更大更强,我想我需要在这里迈出一些小步伐。

这样我就可以获得特定分支更改的所有文件的列表。我怀疑我可以做一个 diff 并解析它,取出所有更改的行号,然后运行 ​​ESLint 并按行号过滤结果,但这听起来像是一个巨大的痛苦。

我的问题是没有更好的实际方法来做到这一点吗?我不是第一个需要这个的人。

需要澄清的是,我理解这个“要求”严格适用于像我这样的边缘情况,在这种情况下,整个文件更改的负担太大了。这不是最佳的。这是次优的,但如果我不这样做,我就什么也得不到,所以我必须选择我的战斗。

小智 9

我为这个确切的用例编写了一个 ESLint 插件。我们有一个现有的配置,并且想要对配置进行重大修改,但是\xe2\x80\x99不想一次性修复所有错误(之前定义为非错误),因为它会\xe2 \x80\x99 是一个糟糕的 RIO。

\n

相反,这个插件允许您只比较您\xe2\x80\x99已经上演的任何内容,并且我们在预提交中运行它。package.json 中的常规 \xe2\x80\x9clint\xe2\x80\x9d 脚本不使用该插件,因此它仍然显示所有错误/警告。

\n

Here\xe2\x80\x99s 是它的链接: https: //www.npmjs.com/package/eslint-plugin-diff

\n


小智 3

我认为你可以使用像Review Dog这样的工具。它将根据 linter 结果添加对您的 PR/MR 的审核反馈,这些反馈仅作为差异的一部分:

reviewdog 提供了一种通过轻松与任何 linter 工具集成来自动将审阅评论发布到代码托管服务(例如 GitHub)的方法。它使用 lint 工具的输出,如果发现的结果与要审查的补丁不同,则将其作为评论发布。

顺便说一句,本文帮助我解决了这个问题,并为您的用例提出了替代解决方案(如果您感兴趣)。

干杯