2008-11-13 45 views
15

Tôi thích phân tích mã tĩnh và thực thi quy tắc của StyleCop. Tuy nhiên, nó thiếu nghiêm trọng ở một số phòng ban quan trọng.Thay thế cho StyleCop cho Visual Studio?

  • Thêm quy tắc mới không được hỗ trợ chính thức và từ những gì tôi nghe thấy khá khó khăn.
  • Tự động "sửa lỗi" vi phạm quy tắc tầm thường sẽ tốt đẹp! Có lẽ không phải với việc đặt tên biến nhưng với phương thức đặt hàng (tĩnh, vv), đây sẽ là một trình tiết kiệm thời gian rất lớn.
  • Phương pháp tiếp cận "một kích thước phù hợp với tất cả" đối với StyleCop là loại hạn chế. Tôi muốn có một bộ quy tắc tùy chỉnh cho các tiêu chuẩn nội bộ của chúng tôi.

Có một sản phẩm thương mại như vậy không?

alt text http://blogs.interakting.co.uk/images/blogs_interakting_co_uk/dominicz/WindowsLiveWriter/MicrosoftStyleCopSourcecodeanalysisforfo_D8EF/styleCopErrors_6.gif

+0

Có một dự án có tên là StyleFix sẽ tự động sửa một số lỗi. Tài liệu kém và chỉ hoạt động trên VS2008. Tôi đã lấy nguồn và sửa đổi nó để tích hợp StyleCop trực tiếp vào chương trình và thực hiện các bản sửa lỗi. (Và biên dịch nó trong VS2005) –

+0

CodeIt.Right, CodeMaid để đặt tên cho hai. – nawfal

Trả lời

12

Thêm quy tắc được, hoặc là sẽ được, officially supported:

Như đã hứa, chúng tôi cũng sẽ phát hành tài liệu SDK cho StyleCop giải thích làm thế nào để tác giả quy tắc tùy chỉnh và làm thế nào để tích hợp các công cụ vào môi trường xây dựng tùy chỉnh. Tài liệu SDK hiện đang được xem xét cuối cùng và chúng tôi hy vọng sớm phát hành tài liệu đó . - JasonAll

Về mặt "trong nhà" phong cách của chúng tôi, tôi đã khá chặt chẽ bằng cách tắt một số ít các quy tắc StyleCop:

  • Headers Tệp (SA1633-SA-1640)
  • Mã đặt hàng (SA1200-SA1202)
  • Yêu cầu "này" (SA1101)

Bạn có thể làm điều này trên toàn cầu bằng cách sửa đổi Set tings.StyleCop tập tin trong thư mục cài đặt, mặc dù tôi đã thực hiện phương pháp đặt một tại gốc của cây nguồn của chúng tôi trong mỗi dự án.

Hiệu quả cuối cùng là nhiều thứ chúng tôi muốn.Có một số lựa chọn "trong nhà" sẽ rất hay để gắn cờ, nhưng ngay cả khi họ không có StyleCop thì vẫn mang lại nhiều giá trị cho chúng tôi.

+0

Đó là những quy tắc tương tự mà tôi hiện đã bị vô hiệu hóa. Nói chung tôi thực sự thích nó. Sẽ tốt hơn nếu Microsoft làm StyleCop được đánh bóng hơn một chút. Tích hợp lâu dài vào Visual Studio có ý nghĩa với tôi với một cái gì đó như thế này. – mmcdole

+0

Một điều thực sự làm tôi thất vọng là thiếu sự hỗ trợ của dòng lệnh, làm cho việc tích hợp StyleCop vào các bản dựng của tôi trở nên khó khăn. Tôi đã kết thúc bằng văn bản giao diện người dùng của riêng mình (http://www.nichesoftware.co.nz/content/stylecop-cmd) – Bevan

5

Gendarme từ Mono, mặc dù nó là mã nguồn mở, không thương mại.

2

Tôi thường viết các bài kiểm tra đơn vị để phản ánh các loại của tôi và kiểm tra vi phạm các quy tắc tùy chỉnh của tôi.

Dưới đây là một ví dụ cho việc xác minh rằng một số loại là không thay đổi: http://blogs.msdn.com/kevinpilchbisson/archive/2007/11/20/enforcing-immutability-in-code.aspx

Dưới đây là khác, cho các quy tắc về đơn vị thử nghiệm đặt tên: http://jbazuzicode.blogspot.com/2008/11/keeping-test-fixture-and-class-names.html

EDIT: Các liên kết thứ 2 dường như bị mất vào cát của thời gian .

+0

Liên kết thứ hai của bạn bị hỏng. – Erik

6

StyleCop for ReSharper có thể giúp (bạn sẽ cần phải mua ReSharper, nhưng các plug-in miễn phí):

StyleCop cho ReSharper là bây giờ tính năng hoàn chỉnh ở chỗ là đã đạt tính năng tương đương với 4,3 StyleCop .

Có 148 quy tắc StyleCop.

  • 38 trong số này phải được sửa thủ công (thường là vì bạn phải nhập văn bản mô tả hoặc biến đổi tên).
  • Trong số 110 quy tắc còn lại 58 được sửa bằng R # Code Cleanup (chế độ im lặng ).
  • Trong số 52 giờ còn lại, chúng tôi có quy tắc Làm sạch mã tự động sửa tất cả chúng tự động.

Chúng tôi cũng cung cấp 106 Sửa chữa nhanh mà cung cấp tại chỗ bối cảnh sửa trình đơn vi phạm đối với 110 quy tắc mà thể được cố định tự động

Chúng tôi cũng xuất xưởng một "StyleCop thân thiện ReSharper Mã Phong cách Chia sẻ Tệp cài đặt "định cấu hình ReSharper thành mã định dạng tự động theo cách thân thiện với StyleCop.

3

Phương án thay thế hoặc bổ sung tốt cho 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ã trên 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ể 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 StyleCop hoặc thậm chí FxCop, 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 các phần tử mã phù hợp. Cụ thể như sau:

CQLinq code rule