2009-01-09 34 views
10

Gần đây tôi đã bắt đầu sử dụng nó. Tuy nhiên, sau khi chạy nó với một trong những dự án lớn nhất của công ty tôi. Nó biến lên núi của vấn đề.Cách quản lý các báo cáo áp đảo FxCop

Danh sách các vấn đề quá áp đảo phải mất vài ngày để tìm và sửa chữa một số, nếu không phải tất cả mọi thứ.

Bây giờ, tôi biết rằng nó không phải là rất thực tế để sửa chữa tất cả mọi thứ FxCop cho bạn biết để sửa chữa. Nhưng khi tôi mới sử dụng công cụ nhỏ này ...

Một số mẹo và thủ thuật tốt về việc sử dụng FxCop hiệu quả là gì?

Trên một dự án mới và trên một dự án hiện có?

Nếu cũng cung cấp các lập trình viên tại công ty của tôi thường viết mã tốt?

Trả lời

4

Lúc đầu, bạn có thể bắt đầu với một bộ quy tắc nhỏ ngay từ đầu. Và sau đó tăng số lượng quy tắc bạn áp dụng.

Và bạn cũng phải có một cái nhìn tại câu trả lời this questio n của ...

3

Tạo đường cơ sở bằng cách chạy fxCop một lần và loại trừ mọi thứ tìm thấy.

Lưu tệp này dưới dạng tệp .fxcop và sử dụng tệp đó để chạy kiểm tra trong tương lai.

Sau đó, khi bạn thực hiện các thay đổi đối với mã của mình, bạn sẽ tạo các vi phạm mới, có thể quản lý. FxCop sẽ phản hồi mọi thứ nếu bạn thay đổi chữ ký của phương thức, ví dụ.

Nếu có thời gian, bạn có thể giải quyết một loại vi phạm một lần sau đó bằng cách hủy loại trừ chúng.

1

Sắp xếp kết quả bởi các loại quy tắc ... sau đó đi qua danh sách sắp xếp để xem toàn bộ thông các loại quy tắc bị phá vỡ rất quan trọng và đáng giá để sửa IYO.

1

Không phải mọi thứ mà báo cáo fxCop đều là các sự cố "phải". Ví dụ chèn đầu vào người dùng vào một lệnh cơ sở dữ liệu bằng cách sử dụng nối chuỗi là tồi tệ hơn nhiều so với các vấn đề kiểu như tiếng Hungari hoặc bắt ngoại lệ hơn là một ngoại lệ cụ thể hơn.

3

Chắc chắn lọc ra những thứ không quan trọng đối với tổ chức của bạn. Ví dụ, toàn bộ khối Quốc tế hóa phần lớn là không quan trọng đối với một trong những dự án của chúng tôi vì vậy chúng tôi chỉ loại trừ nó và rằng một mình là đủ để làm cho danh sách quản lý được. (Có một số gợi ý tuyệt vời trong khối mà chúng tôi muốn triển khai nhưng chúng không quan trọng đối với ứng dụng vào thời điểm đó.)

Bạn cũng có thể tạo một vài dự án FxCop nhóm các ngoại lệ cho đến khi bạn giảm số xuống có thể quản lý ("khắc phục những lỗi này ngay bây giờ", "khắc phục những lỗi này sớm", "khắc phục những điều này bất cứ khi nào").

Tôi chắc rằng tôi đã dành một tuần vững chắc để loại trừ/bao gồm vi phạm cho đến khi chúng tôi có danh sách phù hợp với chính sách của chúng tôi. Sau đó, một 2-3 chỉ sửa chữa vi phạm. :-(

+0

Đó là gần bằng một tháng ... :-( – chakrit

+0

Buồn nhưng đúng ... Sau đó bạn chạy nó trong một dự án tồi tệ hơn bạn - học được rằng từ kinh nghiệm. –

2

Những điều về FxCop được, nó là một công cụ tuyệt vời đối với trường hợp sử dụng cụ thể nó được thiết kế cho. Nó được thiết kế để giúp các nhà phát triển thư viện lớp. Vì vậy, nếu bạn đang Developer Express hoặc Infragistics và bạn' tái tạo một thư viện mã được sử dụng bởi các nhà phát triển trên toàn thế giới, bạn cần đặt tên tốt, toàn cầu hóa tốt, và một loạt các thứ khác.

Vì vậy, nếu bạn đặt tên cho tất cả các biểu mẫu của bạn giống như frmMain, FxCop sẽ khiếu nại vì có vẻ xấu xí trong thư viện lớp học. Nhưng nếu bạn chỉ làm việc trên một ứng dụng WinForms trong nhà, bạn không cần phải quan tâm. Tương tự như vậy, bạn sẽ phát điên với tất cả nội dung về IFormatProvider, quá tải MessageBox chỉ định hướng văn bản, v.v. Nhưng trừ khi bạn đang tạo mã cho đối tượng toàn cầu, bạn có thể bỏ qua chúng.

Điều quan trọng là hiểu đối tượng dự định của FxCop. Bạn có thể bỏ qua một số đề xuất nhất định dựa trên những cách bạn khác với đối tượng đó.

0

Phương án thay thế cho FxCop sẽ là sử dụng công cụ NDepend. Công cụ này cho phép viết Quy tắc mã trên C# Truy vấn LINQ (những gì chúng tôi gọi là CQLinq). Tuyên bố từ chối trách nhiệm: Tôi là một trong những nhà phát triển của công cụ

Theo mặc định, hơn 200 code rules được đề xuất. Tùy chỉnh các quy tắc hiện tại hoặc tạo quy tắc của riêng bạn là đơn giản nhờ cú pháp nổi tiếng C# LINQ.

Để giữ số lượng giả tích cực thấp (nghĩa là để tránh báo cáo áp đảo), CQLinq cung cấp những khả năng độc đáo để xác định các thiết lập JustMyCode qua các truy vấn mã đặc biệt bắt đầu bằng notmycode là gì. Bạn có thể tìm thấy thêm giải thích về tính năng này here. Dưới đây là ví dụ hai notmycode truy vấn mặc định:

Để giữ số lượng giả tích cực thấp, với CQLinq bạn cũng có thể tập trung quy tắc cho kết quả chỉ trên mã được thêm hoặc mã được cấu trúc lại, kể từ defined baseline in the past. Xem các nguyên tắc sau, phát hiện phương pháp quá phức tạp thêm hoặc refactored kể từ đường cơ sở:

warnif count > 0 
from m in Methods 
where m.CyclomaticComplexity > 20 && 
     m.WasAdded() || m.CodeWasChanged() 
select new { m, m.CyclomaticComplexity } 

Cuối cùng, thông báo rằng với NDepend đang quy tắc có thể được xác nhận live in Visual Studio và lúc quá trình xây dựng, trong một generated HTML+javascript report.

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