如何在Node中检测代码库中不需要的函数的使用,尤其是Gulp?
我正在检查无意中被破坏的规格,例如ddescribe
/ fdescribe
和iit
/ fit
对于Jasmine或.only
和{{1}对于摩卡:
.skip
// should be reported
fdescribe(function () {
// should not be reported
it(function () {
var fit = ...;
this.fit = ...;
});
// should not be reported
// fit(function () { ... });
// should be reported
xit(function () { ... });
// should be reported
fit(function () { ... });
});
任务应该以错误退出,并输出使用列出的函数的文件名和行号。
肯定不需要检测已注释的那些,以及具有相同名称的函数/属性(很可能是// should be reported
describe.only(function () {
// should not be reported
it(function () { ... });
// should not be reported
// it.only(function () { ... });
// should be reported
it.skip(function () { ... });
// should be reported
it.only(function () { ... });
});
),因此这里不能选择简单的正则表达式匹配(就像它可以用于fit
)。一些基于AST的解决方案可以接受用户定义的函数名称。
答案 0 :(得分:8)
我会通过ESLint
javascript linting实用程序在静态分析步骤中解决它。为了捕捉代码库中意外遗留的独占/重点mocha规范,no-exclusive-tests
rule中实现了eslint-plugin-mocha
plugin:
Mocha有一项功能,允许您独家运行测试 将
.only
附加到测试套件或测试用例。这个功能确实如此 有助于调试失败的测试,因此您不必执行所有操作 你的考试。在您修复测试之后和提交测试之前 更改您必须删除.only
以确保执行所有测试 你的构建系统。此规则提醒您通过引发来删除测试中的
.only
在使用排他性功能时发出警告。
如果您想将eslint
游戏与gulp
绑定,请使用gulp-eslint
插件。
在git hook中提交之前运行gulp
eslint
任务可能也是个好主意。我们已使用pre-git
包来安装和跟踪git挂钩。
这样,专注或排他测试就不会首先进入代码库。