1 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
看起來(lái)函數(shù)不為空的原因是您的覆蓋率跟蹤器,因此cov_10clr7afd6.f[9]++. 這是檢查任何已完成編譯步驟的代碼的問(wèn)題之一,它可能不是您合理期望的。
這里有一些選項(xiàng):
考慮正則表達(dá)式替換中的插入
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)
此解決方案也是如此,因?yàn)?codecov 工具中的任何更改都可能會(huì)破壞此問(wèn)題。
使用 ESLint 代替
但故意忽略帶注釋的函數(shù)。reportIfEmpty
您可以采用這種行為,也可以通過(guò)簡(jiǎn)化源代碼中的函數(shù)來(lái)基于它編寫自己的行為。
// 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 分鐘內(nèi)創(chuàng)建自定義 ESLint 規(guī)則”將此新規(guī)則添加到您的 eslint 配置中。
這應(yīng)該是一個(gè)更強(qiáng)大的解決方案,但可能會(huì)突出顯示您不想處理的其他錯(cuò)誤。您可以使用eslint 覆蓋來(lái)幫助將規(guī)則定位到您想要的文件。
// .eslintrc
{
? ? "overrides": [
? ? ? ? {
? ? ? ? ? ? "files": ["some/path/*.ts"],
? ? ? ? ? ? "rules": {
? ? ? ? ? ? ? "my-project/no-empty-functions": "error"
? ? ? ? ? ? }
? ? ? ? }
? ? ]
}
添加回答
舉報(bào)