【发布时间】:2020-09-16 08:22:16
【问题描述】:
我需要一种方法来仅在分支上已更改的代码行或块上运行 ESLint。我们的想法是,我们有一个庞大的旧代码库,我们希望至少继续执行 ESLint 规则。
我在 CI 中实现了它,对 PR 中更改的所有文件进行 linting。但是人们正在触摸文件中的一行,突然间他们必须修复 77 个 ESLint 错误。
就我个人而言,我一点也不担心他们,但他们比我更大更强壮,我想我需要在这里迈出一些小步。
这样我就可以获得针对特定分支更改的所有文件的列表。而且我怀疑我可以做一个 diff 并解析它并提取所有更改的行号,然后运行 ESLint 并按行号过滤结果,但这听起来像一个巨大的痛苦。
我的问题是没有更好的实际方法来做到这一点吗?我不是第一个需要这个的人。
为了清楚起见,我明白这个“要求”严格适用于像我这样的边缘情况,其中整个文件更改的负担太大了。这不是最佳的。这是次优的,但如果我不这样做,我什么也得不到,所以我必须选择我的战斗。
【问题讨论】:
-
但如果你只是查看差异,你仍然会错过问题。假设您有
let x = 42;,然后是foo(x)。一次提交会删除函数调用。现在您有一个未使用的变量x,但扫描更改的行并没有发现这一点。您也可以遇到相反的问题,提交添加了bar(y)。但是y从未定义过。仅通过扫描更改无法找到此问题。 -
我喜欢,反对的理由越多越好。我的计划是只使用行级别的东西,比如 react/no-spread-props 这可能会导致你随着越来越深入而不得不更改许多文件(更多证据表明这是一条重要规则)。这样人们会停止这样做,但如果他们用一个文件更改文件,他们不会完全搞砸。
标签: git github continuous-integration eslint