2009-12-10 37 views
87

Có Stylecop thay thế FXcop không? Sản phẩm nào chúng ta nên sử dụng với Visual Studio 2008?Stylecop vs FXcop

+1

dup? http://stackoverflow.com/questions/580168/visual-studio-code-analysis-vs-stylecop-fxcop –

Trả lời

158

Stylecop là 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ý lớn hơn. Nó đưa ra quyết định về phong cách chủ yếu để tránh các cuộc chiến tranh thánh (sau khi tất cả, phong cách gần như luôn luôn là một điều chủ quan vốn có). 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 của StyleCop, nhưng đó là ok. Điều đó có nghĩa rằng StyleCop là một sự thỏa hiệp tốt trong số các hướng dẫn phong cách rộng lớn tồn tại. (Nếu quy tắc của stylecop có thể tùy biến cao, ngoài việc chỉ cần bật/tắt chúng, nó sẽ đánh bại toàn bộ mục đích của công cụ.)

FxCop, là công cụ phân tích tĩnh hoạt động trên cấp độ quản lý hội,, tổ hợp. Nó có thể được chỉ dẫn thông qua các thuộc tính bởi vì nó có thể 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 ở mức "nhị phân" (như nó) so với mức cú pháp.

Để trả lời câu hỏi của bạn, StyleCop không supercede FxCop và FxCop không supercede stylecop. Chúng là hai công cụ khác nhau với hai mục đích khác nhau mà cả hai có thể cung cấp một lợi ích thực sự cho mã của bạn.

(. AKA, tôi chạy với cả :))


Một vài ví dụ về những điều người ta 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 những 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 thông qua xml-comments, thứ tự định nghĩa phương thức trong một lớp.

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 của chu trình, các tham chiếu rỗng tiềm ẩn.

+1

Có, các câu trả lời trước đây so sánh hai câu trả lời sai trên tất cả các số. StyleCop và FxCop thực hiện hai nhiệm vụ rất khác nhau, và nó là giá trị điều tra giá trị từng cung cấp trên codebase của bạn và tại sao bạn nên chạy chúng. – Jedidja

+3

Đồng ý rằng không phải tất cả quy tắc StyleCop đều tốt, nhưng khi bạn nói những quy tắc bạn không muốn có thể bị tắt. Chúng tôi đang sử dụng StyleCop - sau khi vô hiệu hóa các quy tắc ngu ngốc đơn giản, nó cung cấp giá trị tốt cho chúng tôi - với chi phí thấp ..! Được đề xuất. (lưu ý rằng chúng tôi ghét nó ngay từ cái nhìn đầu tiên ..) – stiank81

+0

@ stiank81: Vâng, tôi nghĩ rằng _everybody_ ghét StyleCop lúc đầu. Tuy nhiên, sau một thời gian ngắn, các lợi ích thực sự tự thiết lập và nó chứng minh rằng nó là một công cụ hữu ích để duy trì sự nhất quán trong nguồn. :) –

16

công cụ stylecop hoạt động trên mã nguồn C# của bạn. fxcop xem mã được biên dịch của bạn từ bất kỳ ngôn ngữ .net nào.

+0

Vì vậy, nếu bạn sử dụng Stylecop, FXCop có thể thêm bất kỳ giá trị nào không? –

+0

Thực sự, bạn nên sử dụng FxCop. –

+0

Ít nhất là bây giờ, cho đến khi nó trở nên dễ cấu hình hơn. :) –

6

FxCop không phân tích mã tĩnh của cụm mã số quản lý của bạn. Hãy suy nghĩ về nó như tìm kiếm các vấn đề sẽ gây ra vấn đề 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 từ một đ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à kinh nghiệm thiết kế của bạn (Định dạng, quy ước đặt tên, tài liệu)

Cả hai công cụ này đều 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.

11

Thay thế hoặc bổ sung tốt cho FxCop/StyleCop sẽ sử dụng công cụ thương mại NDepend.Với công cụ này, bạn có thể viết Quy tắc mã qua LINQ truy vấn(namely CQLinq). Disclaimer: Tôi là một trong những nhà phát triển của công cụ

Hơn 200 code rules được đề xuất theo mặc định, bao gồm các thiết kế, kiến ​​trúc, mã chất lượng, đang tiến hóa, đặt tên công ước, mã chết, .NET Fx usage ...

CQLinq được dành để viết các quy tắc mã có thể là verified live in Visual Studio hoặc có thể là verified during build process and reported in an HTML/javascript report.

Sức mạnh của CQLinq qua FxCop hoặc StyleCop, là nó là đơn giản để viết một quy tắc đang, và nhận được ngay kết quả. Các cơ sở được đề xuất để duyệt qua các phần tử mã phù hợp. Cụ thể như sau:

CQLinq code rule

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