Làm thế nào việc sử dụng các chức năng không mong muốn trong cơ sở mã được phát hiện trong Node, đặc biệt là Gulp?Phát hiện các chức năng không mong muốn (fdescribe, describe.only) như nhiệm vụ Gulp
tôi sau khi kiểm tra thông số kỹ thuật cho vô hư hỏng, tức là ddescribe
/fdescribe
và iit
/fit
cho Jasmine hoặc .only
và .skip
cho 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() { ... });
});
Nhiệm vụ nên thoát với lỗi và tên tệp đầu ra và số dòng nơi các hàm được liệt kê được sử dụng.
Các chú thích chắc chắn không phải được phát hiện, cũng như các hàm/thuộc tính có cùng tên (rất có thể là fit
), do đó, kết hợp regexp đơn giản không phải là một tùy chọn ở đây (giống như là console.*
). Một số giải pháp dựa trên AST chấp nhận tên hàm do người dùng định nghĩa sẽ được đánh giá cao.
Tôi không nghĩ về linters cho mục đích đó. Tôi muốn có giải pháp dựa trên AST cho các tên hàm do người dùng định nghĩa trong tay, nhưng chỉ dành cho các hình khối khung kiểm thử eslint-plugin-mocha có thể là những gì tôi cần. Đáng buồn thay, có vẻ như nó không hỗ trợ '.skip'. – estus
@ bestus tốt, chúng tôi đã có cùng một vấn đề chính xác nhưng với hoa nhài. Chúng ta đã sửa nó bằng 'eslint' và' eslint-plugin-jasmine', chạy lệnh 'grunt eslint' như một git hook trước cam kết - bây giờ, sau vài tháng sử dụng thiết lập này, tôi có thể nói rằng nó thực sự giúp giữ các codebase sạch của thức ăn thừa ngẫu nhiên như thông số kỹ thuật tập trung. Vui mừng được giúp đỡ. – alecxe
@estus Tôi nghĩ quy tắc 'eslint-plugin-mocha' này sẽ cảnh báo về việc bỏ qua: https: // github.com/lo1tuma/eslint-plugin-mocha/blob/master/docs/rules/no-global-tests.md. – alecxe