Câu trả lời:
Stylecop là một công cụ phân tích kiểu hoạt động ở cấp mã nguồn. Nó tồn tại chủ yếu để cung cấp một phong cách chung duy nhất mà các dự án được quản lý có thể sử dụng để duy trì tính nhất quán trong thế giới phần mềm được quản lý rộng lớn hơn. Nó đưa ra các quyết định liên quan đến phong cách chủ yếu để tránh các cuộc thánh chiến (sau tất cả, phong cách hầu như luôn luôn là một điều chủ quan cố hữu). Tôi không nghĩ rằng tôi đã từng gặp một người thích tất cả các quy tắc StyleCop, nhưng đó là ok . Nó có nghĩa là StyleCop nói chung là một sự thỏa hiệp tốt giữa một loạt các hướng dẫn về phong cách tồn tại. (Nếu các quy tắc của stylecop có thể tùy chỉnh cao, ngoài việc chỉ bật / tắt chúng, nó sẽ đánh bại toàn bộ mục đích của công cụ.)
Mặt khác, FxCop là một công cụ phân tích tĩnh hoạt động ở cấp độ của assembly được quản lý. Nó có thể được chỉ dẫn thông qua các thuộc tính vì nó có thể nhìn thấy các thuộc tính trên các phần tử mã, ví dụ. Nó phát hiện các vấn đề có thể được nhìn thấy ở cấp độ "nhị phân" (như nó đã từng) trái ngược với cấp độ cú pháp.
Để trả lời câu hỏi của bạn, StyleCop không ép buộc FxCop và FxCop không ép buộc quá nhiều stylecop. Chúng là hai công cụ khác nhau với hai mục đích khác nhau có thể mang lại lợi ích thực sự cho mã của bạn.
(AKA, tôi chạy với cả hai. :))
Một vài ví dụ về những thứ một người có thể phát hiện so với những thứ khác có thể phát hiện:
Vi phạm StyleCop có thể bao gồm các cảnh báo liên quan đến: Khoảng trắng, Định dạng, Tài liệu phương thức công khai qua xml-comments, thứ tự định nghĩa phương thức trong một lớp.
Các hành vi vi phạm FxCop có thể bao gồm cảnh báo liên quan đến: Toàn cầu hóa, khớp nối chặt chẽ, độ phức tạp theo chu kỳ, phần tham chiếu rỗng tiềm ẩn.
stylecop hoạt động trên mã nguồn C # của bạn. fxcop xem mã đã biên dịch của bạn từ bất kỳ ngôn ngữ .net nào.
Một giải pháp thay thế hoặc bổ sung tốt cho FxCop / StyleCop sẽ là sử dụng công cụ thương mại NDepend . Với công cụ này, người ta có thể viết Quy tắc mã trên các Truy vấn LINQ (cụ thể 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ụ
Hơn 200 quy tắc mã được đề xuất theo mặc định, chúng bao gồm thiết kế , kiến trúc , chất lượng mã , quá trình tiến hóa đang , quy ước đặt tên , mã chết , sử dụng .NET Fx ...
CQLinq dành riêng để viết các quy tắc mã có thể được xác minh trực tiếp trong Visual Studio hoặc có thể được xác minh trong quá trình xây dựng và được báo cáo trong báo cáo HTML / javascript .
Điểm mạnh của CQLinq so với FxCop hoặc StyleCop, đó là việc viết quy tắc mã rất đơn giản và nhận ngay lập tức kết quả . Cơ sở vật chất được đề xuất để duyệt các phần tử mã phù hợp. Cụ thể điều này trông như thế này:
FXCop thực hiện phân tích mã tĩnh của các cụm mã được quản lý của bạn. Hãy coi đó là việc tìm ra các vấn đề sẽ gây ra sự cố trong thời gian chạy hoặc điều đó sẽ ảnh hưởng đến cách nhà phát triển tin rằng mã sẽ chạy (mã không thể truy cập).
StyleCop phân tích cấu trúc mã của bạn theo quan điểm văn bản. Hãy coi đây là những vấn đề sẽ ảnh hưởng đến sự phát triển và trải nghiệm thiết kế của bạn (Định dạng, quy ước đặt tên, tài liệu)
Cả hai đều là những công cụ RẤT có giá trị và bạn nên sử dụng cả hai nhưng chúng tập trung vào các vấn đề khác nhau.
StyleCop thực hiện phân tích mã nguồn không thể cấu hình được. Nó không thực sự làm điều tương tự như FxCop, phân tích mã đã biên dịch.
Các bài báo wikipedia về những điều này cung cấp tóm tắt tốt về sự khác biệt: