2008-12-09 27 views
21

Có thể loại trừ một không gian tên hoàn chỉnh khỏi tất cả các phân tích FxCop trong khi vẫn phân tích phần còn lại của assembly bằng cách sử dụng SuppressMessageAttribute? Trong trường hợp hiện tại của tôi, tôi có một loạt các lớp do LINQ to SQL tạo ra, gây ra rất nhiều vấn đề FxCop, và rõ ràng, tôi sẽ không sửa đổi tất cả các tiêu chuẩn FxCop, vì rất nhiều sửa đổi đó sẽ biến mất nếu tôi tạo lại các lớp học.Loại trừ hoàn toàn không gian tên từ phân tích mã FxCop?

Tôi biết rằng FxCop có tùy chọn dự án để ngăn chặn phân tích trên mã được tạo, nhưng dường như không nhận ra thực thể và các lớp ngữ cảnh được tạo bởi LINQ 2 SQL như mã được tạo.

+0

Đây là bản sao chính xác vì câu hỏi khác cũng hỏi về LINQ-to-SQL; nhưng tôi nghĩ rằng các câu trả lời nên được hợp nhất, và cuống được duy trì cho khả năng tìm kiếm. –

Trả lời

17

Nếu bạn gắn thẻ lớp học của bạn với các thuộc tính [GeneratedCode], bạn có thể sử dụng cờ/ignoregeneratedcode với FxCop như đã mô tả trong bài viết này MSDN:

FAQ: How do I prevent FxCop from firing warnings against generated code

Bạn có thể để thêm một tập tin mã mới và thực hiện các lớp học một phần mới ở đó để thêm thuộc tính vào các lớp học:

[GeneratedCode] 
public partial class MainDataContext { } 

Chỉ cần đảm bảo bạn thêm mọi thứ vào đúng không gian tên khi tạo tệp mới.

+0

Cách địa chỉ này câu hỏi? câu hỏi là về một không gian tên, điều này chỉ sửa chữa nó cho một lớp duy nhất –

+1

@Juan - Đọc thêm câu hỏi. OP thực sự hỏi làm thế nào để loại trừ "một loạt các lớp được tạo ra bởi LINQ to SQL". Đây là giải pháp cho vấn đề đó. Thật không may, không có giải pháp tồn tại cho toàn bộ không gian tên. –

1

Sử dụng thuộc tính mã được tạo, sẽ là số blog post từ nhóm Phân tích mã về chủ đề.

này ở phía trên cùng của không gian tên nên làm các trick:

[GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] 
+0

Thật không may, người ta không thể thêm các thuộc tính đó vào các không gian tên, theo như tôi biết. Điều đó có nghĩa là tôi sẽ phải thêm nó vào từng lớp được tạo theo cách thủ công - đó không thể là giải pháp lý tưởng. : D – hangy

+4

khá nhiều. Nỗi đau thực sự là nếu bạn phải tạo lại mã vì bất kỳ lý do nào, bạn phải loại bỏ thuộc tính đó một lần nữa. Nếu các lớp LINQ to Sql tạo ra là partials, bạn có thể duy trì các thuộc tính cách xa mã được tạo ra. Tôi có một vấn đề tương tự với EF classse. – Chane

1
<Assembly: SuppressMessage("Microsoft.Design", _ 
    "CA1020:AvoidNamespacesWithFewTypes", _ 
    Scope:="namespace", _ 
    Target:="Missico.IO")> 

tuyên bố Đặt trong GlobalSuppressions.vb tại thư mục gốc của dự án.

Tất cả những gì tôi có là ví dụ VB.

+0

Điều này không có tác dụng đối với nhiều cảnh báo tạo mã trong VS 2010 Code Analysis: dường như không bị triệt tiêu ở mức không gian tên. Nhưng có một tùy chọn khác: http://stackoverflow.com/questions/2221881/code-analysis-on-a-code-generator-generated-file-how-to-suppress-warnings/2739791#2739791 – Richard

4

Thêm [GeneratedCode] attribute vào lớp học.
EDIT: Tôi muốn nói đến các lớp học có cùng tên, như được giải thích bằng câu trả lời khác.

Các vấn đề liên quan