Stylecop vs FXcop


Câu trả lời:


171

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.


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

3
Đồng ý rằng không phải tất cả các quy tắc StyleCop đều tốt, nhưng như bạn đã nói những quy tắc bạn không muốn có thể bị vô hiệu hóa. 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ó mang lại 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ó ở cái nhìn đầu tiên ..)
stiank81

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

1
câu trả lời tuyệt vời những gì tôi đang tìm kiếm :)
GibboK

16

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.


Vậy nếu bạn sử dụng Stylecop, FXCop có thể thêm giá trị nào không?
JL.

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

Ít nhất là bây giờ, cho đến khi nó có thể cấu hình tốt hơn. :)
Andrew Rollings

1
Không chắc rằng stylecop sẽ trở nên dễ cấu hình hơn đáng kể. Một tính năng quan trọng hơn nhiều đối với stylecop là tự động sửa lỗi vi phạm kiểu dáng.
Greg D

chúng tôi sử dụng Resharper để tự động tạo mã tuân theo các quy tắc stylecop. Điều đó một mình làm cho nó đáng giá mua. Và bạn nhận được tất cả các lợi ích khác trên đó.
Không hoàn lại tiền Không trả lại

11

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:

Quy tắc mã CQLinq


6

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.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.