2008-09-01 63 views
174

Công cụ nào có sẵn để phân tích tĩnh dựa vào mã C#? Tôi biết về FxCop và StyleCop. Có người khác không? Tôi đã chạy qua NStatic trước đây nhưng nó đã được phát triển cho những gì có vẻ như mãi mãi - nó trông khá slick từ những gì tôi đã nhìn thấy của nó, vì vậy nó sẽ được tốt đẹp nếu nó sẽ bao giờ nhìn thấy ánh sáng trong ngày.Công cụ phân tích tĩnh nào có sẵn cho C#?

Cùng các dòng này (chủ yếu là quan tâm của tôi cho phân tích tĩnh), công cụ để kiểm tra mã cho các vấn đề đa luồng (deadlocks, điều kiện chủng tộc, vv) cũng có vẻ hơi khan hiếm. Typemock Racer vừa mới xuất hiện nên tôi sẽ xem xét điều đó. Có gì ngoài chuyện này không?

Ý kiến ​​thực tế về các công cụ bạn đã sử dụng được đánh giá cao.

+0

@IraBaxter Tôi đã bắt đầu một [thảo luận về câu hỏi này trên Meta] (http://meta.stackexchange.com/questions/229248/ cần-một-tuổi-phổ biến-c-tĩnh-phân tích-công cụ-câu hỏi-được-xóa-cho-khóa), và tôi mời bạn để nói lên các đối số của bạn cho lý do tại sao câu hỏi này không nên bị xóa, nếu bạn muốn. –

Trả lời

305

Mã phát hiện vi phạm cụ:

  • Fxcop, công cụ tuyệt vời bởi Microsoft. Kiểm tra việc tuân thủ các nguyên tắc khuôn khổ .net.

    Chỉnh sửa tháng 10 năm 2010: Không còn có sẵn dưới dạng bản tải xuống độc lập nữa. Nó bây giờ được bao gồm trong Windows SDK và sau khi cài đặt có thể được tìm thấy trong Program Files \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FxCop \ FxCopSetup.exe

    Sửa Tháng 2 2018: Chức năng này hiện đã được tích hợp vào Visual Studio 2012 và sau đó là Code Analysis

  • Clocksharp, dựa trên phân tích mã nguồn (C# 2.0)
  • Mono.Gendarme, tương tự như FxCop nhưng với một giấy phép mã nguồn mở (dựa trên Mono.Cecil)
  • Smokey, sim ilar đến Fxcop và Gendarme, dựa trên Mono.Cecil. Không còn phát triển nữa, nhà phát triển chính làm việc với nhóm Gendarme ngay bây giờ.
  • Coverity Prevent™ for C#, sản phẩm thương mại
  • PRQA QA·C#, sản phẩm thương mại
  • PVS-Studio, sản phẩm thương mại
  • CAT.NET, visual studio addin giúp xác định các lỗ hổng bảo mật
  • CodeIt.Right
  • Spec#
  • Pex

Chất lượng Metric cụ:

  • NDepend, công cụ trực quan tuyệt vời. Hữu ích cho các chỉ số mã, quy tắc, khác biệt, nghiên cứu về ghép nối và phụ thuộc.
  • Nitriq, miễn phí, có thể dễ dàng viết số liệu/ràng buộc của riêng bạn, hình ảnh đẹp mắt. Chỉnh sửa tháng 2 năm 2018: liên kết tải xuống hiện đã qua đời.
  • RSM Squared, dựa trên phân tích mã nguồn
  • C# Metrics, sử dụng một phân tích đầy đủ của C#
  • SourceMonitor, một công cụ cũ mà thỉnh thoảng được cập nhật
  • Code Metrics, một add-in
  • Vil, công cụ cũ Reflector không hỗ trợ .NET 2.0. Sửa tháng 1 năm 2018: liên kết bây giờ đã chết

Kiểm tra Phong cách cụ:

  • StyleCop, Microsoft công cụ (chạy từ bên trong Visual Studio hoặc tích hợp vào một dự án MSBuild). Cũng có sẵn as an extension cho Visual Studio 2015 và C# 6.0
  • Agent Smith, mã phong cách xác nhận plugin cho ReSharper

Sao chép Detection:

  • Simian, dựa trên mã nguồn. Làm việc với nhiều ngôn ngữ.
  • CloneDR, chỉ phát hiện các dòng được tham số hóa trên ranh giới ngôn ngữ (cũng xử lý nhiều ngôn ngữ khác với C#)
  • Clone Detective plugin Visual Studio.(Nó sử dụng ConQAT nội bộ)
  • Atomiq, dựa trên mã nguồn, nhiều ngôn ngữ, mát mẻ "bánh xe" trực quan
cụ

chung Refactoring

  • ReSharper - Majorly mát phân tích mã C# và các tính năng tái cấu trúc
+4

Xem trang MSDN về FxCop: http://msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "FxCop là một ứng dụng phân tích các tập hợp mã được quản lý (mã nhắm vào .NET. Thời gian chạy ngôn ngữ chung của khung công tác) và báo cáo thông tin về các hội đồng, chẳng hạn như thiết kế có thể, bản địa hóa, hiệu suất và các cải tiến bảo mật. " –

+0

Liên kết FxCop đã bị xóa khỏi trang web của Microsoft. Đây là bản tải xuống FxCop 10.0 ": http://www.microsoft.com/downloads/details.aspx?displaylang=vi&FamilyID=917023f6-d5b7-41bb-bbc0-411a7d66cf3c – ulrichb

+0

Đây có phải là Simian: http: //www.harukizaemon không .com/simian/index.html? (bạn có liên kết bị hỏng). Ngoài ra nó có vẻ là chỉ NET 1.1. – Theraot

1
  • Gendarme là trình phân tích tĩnh dựa trên quy tắc nguồn mở (tương tự như FXCop, nhưng tìm thấy nhiều vấn đề khác nhau).
  • Clone Detective là một trình cắm thêm tốt đẹp cho Visual Studio tìm mã trùng lặp. Ngoài ra nói về Mono, tôi tìm thấy hành động biên dịch với trình biên dịch Mono (nếu mã của bạn là nền tảng độc lập đủ để làm điều đó, một mục tiêu bạn có thể muốn phấn đấu cho anyway) tìm thấy tấn biến không được quan tâm và cảnh báo khác mà Visual Studio hoàn toàn bị bỏ qua (ngay cả với mức cảnh báo được đặt là 4).
6

Công cụ NDepend được trích dẫn như Chất lượng Metric cụ nhưng nó là khá cũng nhiều một Mã phát hiện vi phạm công cụ. 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ụ

Với NDepend, người ta có thể viết Code Rule over LINQ Queries (what we call CQLinq). Hơn 200 CQLinq code rules được đề xuất theo mặc định. Sức mạnh của CQLinq là thật đơn giản để viết một quy tắc mã và nhận được ngay lập tức kết quả. Các cơ sở được đề xuất để duyệt qua các phần tử mã phù hợp. Ví dụ:

CQLinq code rule

Bên cạnh đó, NDepend đi kèm với nhiều người khác phân tích tĩnh như tính năng. Chúng bao gồm:

+1

Tạm thời ngừng hoạt động của codebetter.com , nó bây giờ hoạt động! –

1

Bạn đã thấy CAT.NET?

Từ lời giới thiệu -

CAT.NET là một mã nhị phân phân tích công cụ giúp xác định các biến thể phổ biến của nhất định lỗ hổng phổ biến có thể làm phát sinh tấn công phổ biến vectơ như Cross-Site Scripting (XSS), SQL Injection và XPath Tiêm.

Tôi đã sử dụng bản beta ban đầu và dường như có một vài điều đáng xem.

0

Axivion Bauhaus Suite là công cụ phân tích tĩnh hoạt động với C# (cũng như C, C++ và Java).

Nó cung cấp các khả năng sau:

  • Software Architecture Visualization (inlcuding phụ thuộc)
  • Thi hành các quy tắc kiến ​​trúc ví dụ lớp, hệ thống con, quy tắc gọi
  • Clone Detection - làm nổi bật sao chép và dán (và sửa đổi mã)
  • Chết Mã Detection
  • Cycle Detection
  • Phần mềm Metrics
  • Mã Phong cách Kiểm tra

Những các tính năng có thể chạy trên cơ sở một lần hoặc là một phần của quy trình Tích hợp liên tục. Các vấn đề có thể được đánh dấu trên cơ sở từng dự án hoặc trên cơ sở nhà phát triển khi hệ thống được tích hợp với hệ thống kiểm soát mã nguồn.

0

Klocwork có một công cụ phân tích tĩnh cho C#: http://www.klocwork.com

+0

Công ty chúng tôi đã mua nó. Trong phạm vi $ 30K cho chúng tôi –

0

Optimyth phần mềm vừa tung ra một dịch vụ phân tích tĩnh trong đám mây www.checkinginthecloud.com. Chỉ cần tải lên mã của bạn một cách an toàn chạy phân tích và nhận kết quả. Không rắc rối.

Nó hỗ trợ nhiều ngôn ngữ bao gồm C# biết thêm có thể được tìm thấy tại wwww.optimyth.com

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