Tôi đang cố vô hiệu quy tắc phân tích mã trên toàn bộ lớp, nhưng KHÔNG cho toàn bộ dự án, chỉ là một lớp duy nhất. Trong ví dụ bên dưới, bản dựng tạo ra cảnh báo CA1822 vì nó cho rằng các phương thức thử nghiệm đơn vị phải là tĩnh.Cách tắt Cảnh báo Phân tích Mã cụ thể cho toàn bộ lớp
Việc sửa chữa là để thêm thuộc tính sau cho mỗi phương pháp thử nghiệm đơn vị: [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
Tuy nhiên, đó là cồng kềnh và clutters một lớp học với nhiều bài kiểm tra đơn vị.
Tôi đã thử:
- Di chuyển các thuộc tính cho lớp
- Bao bì tất cả các phương pháp trong
#pragma warning disable CA1822
#pragma warning restore CA1822
Cả hai phương pháp tiếp cận đã làm việc.
public class TestClass
{
public TestClass()
{
// some setup here
}
[Fact]
public void My_Unit_Test1()
{
// the 'this' parameter is never used, causes CA warning 1822
}
[Fact]
public void My_Unit_Test2()
{
// the 'this' parameter is never used, causes CA warning 1822
}
}
Sử dụng bản cập nhật VS2015 2, .net 4.61 và Bộ phân tích phân tích mã mới.
Tôi đã giải quyết vấn đề này (và các vấn đề khác) bằng cách sử dụng một quy tắc Phân tích mã khác cho các dự án Thử nghiệm đơn vị. Tôi đã tắt các quy tắc không áp dụng cho các dự án Thử nghiệm Đơn vị. –
@MatthewWatson - Tôi cũng sử dụng một quy tắc khác cho các dự án thử nghiệm. Trong trường hợp này, tôi muốn quy tắc áp dụng cho dự án thử nghiệm đơn vị của mình, không chỉ một lớp cụ thể. – SFun28
Thật không may là bạn không thể làm điều này - sự đàn áp phải luôn áp dụng cho mức độ cảnh báo/lỗi được báo cáo, vì vậy nếu đó là một phương pháp, bạn chỉ có thể chặn cảnh báo cho phương thức đó. –