检测不需要的功能(fdescribe,describe.only)作为Gulp任务

时间:2016-02-18 15:29:46

标签: node.js jasmine gulp mocha

如何在Node中检测代码库中不需要的函数的使用,尤其是Gulp?

我正在检查无意中被破坏的规格,例如ddescribe / fdescribeiit / 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的解决方案可以接受用户定义的函数名称。

1 个答案:

答案 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挂钩。

这样,专注或排他测试就不会首先进入代码库。