2011-09-12 48 views
10

Tôi có một thiết lập nơi Visual Studio 2010 chạy thử nghiệm phân tích bảo hiểm và đầu ra của nó được hấp thụ bởi NDepend trong quá trình xây dựng tích hợp.Có thể loại trừ toàn bộ không gian tên khỏi phân tích NDepend không?

Một vài hội đồng chứa mã được tạo mà cần phải được bỏ qua bởi NDepend.
Có cách nào để thực hiện việc này không? Tốt hơn là toàn bộ không gian tên.

Trả lời

4

Code Query and Rule over LINQ (CQLinq) thực sự cung cấp cơ sở cho bỏ qua mã được tạo.

Có miền được xác định trước thuận tiện có tên là JustMyCode loại ICodeBaseView.

Tên miền JustMyCode đại diện cho một cơ sở của CQLinq để loại bỏ các phần tử mã được tạo ra khỏi kết quả truy vấn CQLinq. Ví dụ truy vấn sau đây sẽ chỉ phù hợp với phương pháp lớn mà không phải được tạo ra bởi một công cụ (như một nhà thiết kế giao diện người dùng):

from m in JustMyCode.Methods where m.NbLinesOfCode > 30 select m 

Tập hợp các yếu tố mã được tạo được xác định bởi các truy vấn CQLinq bắt đầu bằng từ khóa CQLinq notmycode . Ví dụ truy vấn dưới đây phù hợp với phương pháp quy định tại file nguồn có tên kết thúc với "designer.cs":

notmycode from m in Methods where 
    m.SourceFileDeclAvailable && 
    m.SourceDecls.First().SourceFile.FileName.ToLower().EndsWith(".designer.cs") 
select m 

Các CQLinq truy vấn Á hậu thực hiện tất cả notmycode truy vấn trước khi truy vấn dựa vào JustMyCode, do đó tên miền JustMyCode được định nghĩa một lần cho tất cả. Rõ ràng trình biên dịch CQLinq phát ra lỗi nếu truy vấn notmycode dựa trên tên miền JustMyCode.

Có 4 yêu cầu mặc định truy vấn, dễ dàng thích ứng để phù hợp với nhu cầu của bạn. Ghi chú rằng không có mặc định notmycode truy vấn cho namespace nhưng bạn có thể tạo một của riêng bạn (s):

+0

Patrick, bạn có thể giải thích về điều này và mô tả cách một người sẽ sửa đổi tất cả các truy vấn CQL được sử dụng để tạo ra các số liệu cho một dự án? Tôi có thể thấy các truy vấn được mã hóa được nhúng trong tệp dự án, nhưng đối với cuộc sống của tôi, tôi không thể tìm thấy nơi tôi sẽ sửa đổi chúng trong giao diện người dùng! – rbellamy

+0

Chỉ cần bắt đầu VisualNDepend.exe, hãy phân tích dự án NDepend của bạn hoặc tải kết quả phân tích gần đây nhất của dự án NDepend của bạn, sau đó xem bảng điều khiển "CQL Query Explorer", đây là nơi bạn có thể duyệt các truy vấn và quy tắc và chỉnh sửa chúng. –

+0

Tôi đang đề cập đến khả năng thay đổi tất cả các truy vấn cùng một lúc. Trường hợp sử dụng - Sao chép tất cả truy vấn bằng cách sử dụng "Truy vấn CQL mặc định Sao chép vào Clipboard" được cung cấp trong tùy chọn "Chỉnh sửa truy vấn CQL". Sau đó, sử dụng công cụ regex của sự lựa chọn, sửa đổi tất cả các truy vấn để bỏ qua một không gian tên cụ thể, hoặc để tôn vinh thuộc tính NDepend [Generated], hoặc bất kỳ thay đổi toàn cục nào khác mà bạn muốn thực hiện cho tiêu chí của các câu lệnh CQL. Bây giờ, làm cách nào để dễ dàng thay thế các truy vấn mặc định cho dự án NDepend bằng các truy vấn được cập nhật/sửa đổi này? – rbellamy

1

Tìm thấy điều này trong "Tóm tắt nhanh các phương pháp để refacto r "

// Here are some ways to avoid taking account of generated methods. 
!(NameIs "InitializeComponent()" OR 
    // NDepend.CQL.GeneratedAttribute is defined in 
    // the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll 
    // You can define your own attribute to mark "Generated". 
    HasAttribute "OPTIONAL:NDepend.CQL.GeneratedAttribute") 

Nhưng điều đó không giải quyết nhu cầu sửa đổi mọi truy vấn CQL để đảm bảo tất cả chúng đều bỏ qua mã được tạo.

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