W jaki sposób można wykryć użycie niepożądanych funkcji w podstawie kodu w Węzłach, w szczególności Gulp?Wykrywanie niepożądanych funkcji (fdescribe, describe.only) jako zadania Gulp
Jestem po sprawdzeniu nieumyślnie uszkodzone specyfikacji, tj ddescribe
/fdescribe
i iit
/fit
dla Jasmine lub .only
i .skip
dla Mocha:
// 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() { ... });
});
Zadanie powinno wyjść z błędu oraz nazwy plików wyjściowych i numery linii, w których używane są wymienione funkcje.
Te skomentowane z pewnością nie muszą być wykrywane, a także funkcje/właściwości o tej samej nazwie (najprawdopodobniej fit
), więc proste dopasowanie do wyrażenia regularnego nie jest tutaj tutaj (jak byłoby to dla console.*
). Zalecane jest pewne rozwiązanie oparte na AST, które akceptuje nazwy funkcji zdefiniowane przez użytkownika.
Nie myślałem o linters w tym celu. Chciałbym mieć rozwiązanie oparte na AST dla nazw zdefiniowanych przez użytkownika funkcji, ale tylko dla globalnych ram testowych eslint-plugin-mocha może być tym, czego potrzebuję. Niestety, wygląda na to, że nie obsługuje '.skip'. – estus
@ Dobre, mieliśmy ten sam dokładny problem, ale z jaśminem. Naprawiliśmy to za pomocą 'eslint' i' eslint-plugin-jaśmin ', uruchamiając zadanie 'grunt eslint' jako pre-commit git hook - teraz, po kilku miesiącach używania tej konfiguracji, mogę powiedzieć, że to naprawdę pomaga utrzymać baza kodów czystych przypadkowych resztek, takich jak skoncentrowane specyfikacje. Miło, że mogłem pomóc. – alecxe
@estus Myślę, że reguła 'eslint-plugin-mocha' ostrzega przed pominięciem: https: // github.com/lo1tuma/eslint-plugin-mocha/blob/master/docs/rules/no-global-tests.md. – alecxe