1 回答
TA贡献1780条经验 获得超1个赞
看起来函数不为空的原因是您的覆盖率跟踪器,因此cov_10clr7afd6.f[9]++. 这是检查任何已完成编译步骤的代码的问题之一,它可能不是您合理期望的。
这里有一些选项:
考虑正则表达式替换中的插入
function isEmpty(f) {
// Get content between first { and last }
const m = f.toString().match(/\{([\s\S]*)\}/m);
// Strip comments
const l = m && m[1]
.replace(/^\s*\/\/.*$/mg, '')
.replace(/cov_\w*\.f\[[0-9]+\]\+\+;?/g, '')
.trim();
if (l.length === 0) {
return true;
} else {
return false;
}
};
function doSeatMouseClick(_event, _seat) {
//do nothing, read only
cov_10clr7afd6.f[9]++;
cov_10clr7afd6.f[500]++
}
var bool = isEmpty(doSeatMouseClick);
console.log(bool)
此解决方案也是如此,因为 codecov 工具中的任何更改都可能会破坏此问题。
使用 ESLint 代替
但故意忽略带注释的函数。reportIfEmpty
您可以采用这种行为,也可以通过简化源代码中的函数来基于它编写自己的行为。
// https://github.com/eslint/eslint/blob/master/lib/rules/no-empty-function.js
function reportIfEmpty(node) {
const kind = getKind(node);
const name = astUtils.getFunctionNameWithKind(node);
if (allowed.indexOf(kind) === -1 &&
node.body.type === "BlockStatement" &&
node.body.body.length === 0
) {
context.report({
node,
loc: node.body.loc,
messageId: "unexpected",
data: { name }
});
}
}
您可以使用以下“在 2 分钟内创建自定义 ESLint 规则”将此新规则添加到您的 eslint 配置中。
这应该是一个更强大的解决方案,但可能会突出显示您不想处理的其他错误。您可以使用eslint 覆盖来帮助将规则定位到您想要的文件。
// .eslintrc
{
"overrides": [
{
"files": ["some/path/*.ts"],
"rules": {
"my-project/no-empty-functions": "error"
}
}
]
}
添加回答
举报