2010-02-08 25 views
5

Chúng tôi chạy Phân tích mã trên tất cả các tệp nguồn của chúng tôi. Một trong các tệp nguồn của chúng tôi là tệp được tạo Linq-To-SQL, chúng tôi không kiểm soát được kết quả được tạo ra. Mã được tạo ra đang tạo ra các cảnh báo Phân tích Mã mà tôi muốn chặn. Có cách nào tôi có thể ngăn chặn cảnh báo CA trong một tập tin mã tạo ra mà không liên quan đến việc tạo ra các thuộc tính và/hoặc pragma trong mã chính nó (mà sẽ bị ghi đè mỗi khi tập tin được tạo ra)?Phân tích mã trên Trình tạo mã đã tạo tệp - Cách chặn cảnh báo?

Trả lời

5

Các lớp của bạn có thuộc tính [GeneratedCode] không? Nếu vậy bạn có thể nhận FxCop để bỏ qua chúng:

Sử dụng một dự án FxCop:

  1. Mở dự án FxCop bạn trong FxCop
  2. Chọn dự án -> Options -> Spelling & Phân tích
  3. Kiểm tra Ngăn chặn các kết quả phân tích đối với mã được tạo
  4. Nhấp vào OK
.210

Via dòng lệnh:

  1. Vượt qua switch/ignoregeneratedcode, ví dụ:
 FxCopCmd.exe /file:MyAssembly.dll /out:AnalysisResults.xml /ignoregeneratedcode 

http://blogs.msdn.com/fxcop/archive/2008/02/28/faq-how-do-i-prevent-fxcop-1-36-from-firing-warnings-against-generated-code.aspx

+0

không SuppressMessage công trình nếu tôi gọi để fxcopcmd.exe sử dụng dòng lệnh? – Kiquenet

+0

Có nên làm – Paolo

0

Nếu bạn đang sử dụng giao diện đồ họa FxCop bạn chỉ đơn giản là có thể loại trừ những vấn đề này trong dự án FxCop. Chỉ cần nhấp chuột phải vào vấn đề và chọn Loại trừ nơi bạn có thể cũng thêm nhận xét.
Nhưng nếu bạn chạy FxCop trong Cửa sổ đầu ra, tôi không có đầu mối. Có lẽ bạn có thể kiểm tra xem nó có thể tạo ra một SuppressMessage cấp module và dán nó vào AssemblyInfo.cs hay không. Nhưng tôi không nghĩ vậy.

+0

có một câu trả lời khác trong câu hỏi liên quan ở đây trên SO cho biết rằng bạn có thể thêm mức mô-đun đàn áp vào assemblyinfo.cs, nhưng tôi đã thử nó và không thể làm cho nó hoạt động. Tôi có thể thêm SuppressMessage vào mọi phương pháp riêng lẻ, nhưng đó là một cơn đau toàn bộ ở cổ khi tôi muốn bỏ qua lỗi cho mọi thứ trong một hội đồng cụ thể. Hy vọng rằng, ai đó sẽ trả lời với một giải pháp cho điều này !!! – Dave

2

Bạn có thể làm việc xung quanh việc thiếu thuộc tính GeneratedCode bằng cách sử dụng nhánh của riêng bạn của các lớp một phần để áp dụng thuộc tính đó. Điều này có nghĩa là bất kỳ mã tùy chỉnh nào bạn thêm (bao gồm triển khai các phương thức từng phần) sẽ bị loại trừ. Ví dụ:

namespace MyApp.DB { 
    [GeneratedCode("LINQ To SQL", "4.0")] 
    internal partial class MyAppDataContext { 
    } 

    // Repeat for each entity 
} 
0

PLINQO (Linq-to-SQL) CodeSmith templates cũng tự động tạo thuộc tính này cho bạn. Hầu hết các trình bổ sung cũng bắt đầu bỏ qua các lớp từng phần được tạo bằng ".generated" trong tên tệp.

[System.CodeDom.Compiler.GeneratedCode ("CodeSmith", "5.0.0.0")]

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