我正在处理的项目有一个巨大的代码库,这意味着如果我在终端中执行
eslint *.js
,我会在输出中得到数千行。我想调整这个命令只是为了打印出错误的数量,而不是实际一一列出所有错误。
如何使我的结果与此类似:
96 problems
再想一想,如果您真的只想要一个数字,那么创建您自己的格式化程序,如下所示。
const errorsInFile => (el, currentEl) => el + currentEl.errorCount
module.exports = function (results) {
return `${results.reduce(errorsInFile, 0)} problems`
}
或者只是为了好玩,我们可以使用 Ramda 来实现它的功能
import { map, pipe, prop, reduce, sum } from 'ramda'
const sumArgs = (...args) => sum(args)
const nProblems = n => `${n} problems`
module.exports = pipe(
map(prop(‘errorCount’),
reduce(sumArgs),
nProblems,
)
你可以尝试:
eslint --format compact 2>&1 >/dev/null | egrep '^[0-9]+ problems'
结果:
169 problems
您可能会发现这很有用,它会为您提供每种错误类型的编号
https://www.npmjs.com/package/eslint-formatter-summary-chart
% eslint --format summary-chart src
==== Files ====
bar.js : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 33.33%
foo.js : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 66.67%
==== Rules ====
constructor-super : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 16.67%
no-cond-assign : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 16.67%
no-constant-condition : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 16.67%
no-debugger : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 16.67%
no-unused-vars : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 33.33%
在 shell 脚本(例如 bash 或 zsh)中,您可以使用
eslint
计算
wc
输出的错误行数,并将其输出到控制台。echo
结果示例:
ERRCOUNT=$(eval "eslint | wc -l")
echo $OUTPUT errors
TL;博士
185 errors
以预期格式显示错误和警告数量的命令
npm run lint 2>&1 | grep -Ei 'error|warning' | wc -l
npm 脚本
npm run lint 2>&1 | grep -Ei 'error|warning' | wc -l | xargs -I {} echo "{} problems"
详细说明
"scripts": {
"lint-count": "next lint 2>&1 | grep -Ei \"error|warning\" | wc -l | xargs -I {} echo \"{} problems\""
...rest
}
您的输出应采用以下格式:
调试器监听 ws://127.0.0.1:57773/79b9261b-d415-45b2-a075-531d9c9e36e5 如需帮助,请参阅:
https://nodejs.org/en/docs/inspector附带调试器。 等待调试器断开连接... (来自 Linter 的错误或警告) (每行一个)
第一部分是标准部分,而来自 lint 命令的错误和警告被控制台视为错误。因此,您还必须在获取数字的命令中考虑 stderr。
要获取错误数,我们必须在 grep 出错误和警告后计算行数的模式下使用
wc命令。 执行 Lint 命令时获取错误数量的方法是:
npm run lint
: 这是获取项目的 Lint 输出的命令。它有错误和警告,每一行最多有一个错误或警告。
: 这是为了捕获输出的 StdErr 部分。这是包含 linter 错误和警告的部分。该命令将标准错误重定向到与标准输出相同的位置,这意味着 lint 命令输出的错误部分可以被捕获,我们可以统计错误和警告。
: 然后我们输入 grep 来查找与错误或警告匹配的任何内容,忽略大小写。
: 最后,我们使用内置的字数统计命令来统计匹配的行数。如果计算单词数,结果将比 linter 错误和警告中的单词数高得多。
按照您想要的格式显示错误或警告的数量
npm run lint 2>&1 | grep -Ei 'error|warning' | wc -l
将此解决方案添加到您的 npm 脚本中
npm run lint 2>&1 | grep -Ei 'error|warning' | wc -l | xargs -I {} echo "{} problems"