Những công cụ phân tích tĩnh nào có sẵn cho C #? [đóng cửa]


174

Những công cụ nào có sẵn để phân tích tĩnh đối với mã C #? Tôi biết về FxCop và StyleCop. Có những người khác? Tôi đã chạy qua NStatic trước đây nhưng nó đã được phát triển cho những thứ dường như là mãi mãi - nó trông khá lắt léo từ những gì tôi đã thấy về nó, vì vậy thật tuyệt nếu được nhìn thấy ánh sáng ban ngày.

Dọc theo những dòng tương tự (đây chủ yếu là sở thích của tôi để phân tích tĩnh), các công cụ kiểm tra mã cho các vấn đề đa luồng (bế tắc, điều kiện cuộc đua, v.v.) cũng có vẻ hơi khan hiếm. Máy đánh chữ Racer vừa xuất hiện nên tôi sẽ xem xét nó. Bất cứ điều gì ngoài điều này?

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


@IraBaxter Tôi đã bắt đầu một cuộc thảo luận về câu hỏi này trên Meta và tôi mời bạn nói lên lý lẽ của mình về lý do tại sao câu hỏi này không nên bị xóa, nếu bạn muốn.

Câu trả lời:


341

Công cụ phát hiện vi phạm mã:

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

    Chỉnh sửa tháng 10 năm 2010: Không còn có sẵn dưới dạng tải xuống độc lập. Hiện tại nó đã được bao gồm trong SDK Windows và sau khi cài đặt có thể được tìm thấy trong Tệp chương trình \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe

    Chỉnh sửa tháng 2 năm 2018 : Chức năng này hiện đã được tích hợp vào Visual Studio 2012 và sau đó là Phân tích mã

  • Clocksharp , dựa trên phân tích nguồn mã (đến C # 2.0)
  • Mono.Gendarme , tương tự Fxcop nhưng có giấy phép mã nguồn mở (dựa trên Mono.Cecil )
  • Smokey , tương tự như Fxcop và Gendarme, dựa trên Mono.Cecil . Không còn phát triển, nhà phát triển chính làm việc với nhóm Gendarme ngay bây giờ.
  • Coverity Ngăn chặn ™ cho 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 , addin phòng thu trực quan giúp xác định các lỗi bảo mật Chỉnh sửa tháng 11 năm 2019: Liên kết đã chết.
  • CodeIt.Right
  • Thông số kỹ thuật #
  • Pex

Công cụ số liệu chất lượng:

  • Gửi tiền , công cụ trực quan tuyệt vời. Hữu ích cho các số liệu mã, quy tắc, khác biệt, khớp nối và nghiên cứu phụ thuộc.
  • Nitriq , miễn phí, có thể dễ dàng viết các số liệu / ràng buộc của riêng bạn, trực quan hóa tốt đẹp. Chỉnh sửa tháng 2 năm 2018: liên kết tải xuống bây giờ đã chết. Chỉnh sửa ngày 17 tháng 6 năm 2019: Liên kết không chết.
  • Bình phương RSM , dựa trên phân tích nguồn mã
  • Số liệu C # , sử dụng phân tích cú pháp đầy đủ của C #
  • NguồnMonitor , một công cụ cũ thỉnh thoảng được cập nhật
  • Mã số liệu , một phản xạ bổ trợ
  • Vil , công cụ cũ không hỗ trợ .NET 2.0. Chỉnh sửa tháng 1 năm 2018: Liên kết bây giờ đã chết

Công cụ kiểm tra kiểu:

Phát hiện trùng lặp:

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

Công cụ tái cấu trúc chung

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

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

Liên kết FxCop đã bị xóa khỏi trang web của Microsoft. Dưới đây là "tải xuống" FxCop 10.0: microsoft.com/doads/ từ
ulrichb

Đây có phải là Simian: harukizaemon.com/simian/index.html ? (bạn có liên kết bị hỏng). Ngoài ra, nó dường như chỉ .NET 1.1.
Theraot

@Theraot Cảm ơn, tôi đã thay đổi url. Liên quan đến phiên bản .NET, Simian có thể chạy trên .NET 1.1 trên Java 5 nhưng điều đó không có nghĩa là nó phát hiện sự trùng lặp trong các phiên bản khác của .NET
Julien Hoarau

Nitriq dường như không còn nữa. Liên kết tải xuống (hiện chuyển hướng đến NimblePros, một phần của Telerik) cho biết "Chúng tôi xin lỗi, chúng tôi không còn cung cấp Nitriq nữa"
Narayana

7

Công cụ NDepend được trích dẫn là Công cụ đo lường chất lượng nhưng nó cũng là một công cụ phát hiện vi phạm mã . Tuyên bố miễn trừ trách nhiệm: Tôi là một trong những nhà phát triển công cụ

Với NDepend, người ta có thể viết Quy tắc mã trên các truy vấn LINQ (cái mà chúng ta gọi là CQLinq) . Theo mặc định, hơn 200 quy tắc mã CQLinq được đề xuất. Điểm mạnh của CQLinq là việc viết quy tắc mã đơn giản và nhận được kết quả ngay lập tức . Các cơ sở được đề xuất để duyệt các yếu tố mã phù hợp. Ví dụ:

Quy tắc mã CQLinq

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


Tôi đã có cơ hội dùng thử NDepend trong vài tuần qua - một người hâm mộ lớn, sẽ nhận được giấy phép dev khi tôi có thể. :) Cám ơn việc làm của bạn!
Michael Armes

1
  • Gendarme là một bộ phân tích tĩnh dựa trên các quy tắc nguồn mở (tương tự như FXCop, nhưng tìm thấy rất nhiều vấn đề khác nhau).
  • Clone Detective là một plugin tốt cho Visual Studio tìm mã trùng lặp.
  • Cũng nói về Mono, tôi 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 đủ độc lập với nền tảng để thực hiện điều đó, thì mục tiêu bạn có thể muốn phấn đấu dù sao) tìm thấy vô số biến số không được kiểm chứng và các Cảnh báo khác mà Visual Studio hoàn toàn bỏ lỡ (ngay cả với mức cảnh báo được đặt thành 4).

1

Bạn đã xem CAT.NET chưa?

Từ khu phố -

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

Tôi đã sử dụng một phiên bản beta đầu tiên và nó dường như đã bật lên một vài điều đáng xem xét.





-1

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

Nó hỗ trợ một số ngôn ngữ bao gồm C # thêm thông tin có thể được tìm thấy tại wwww.optimyth.com


-1

Axivion Bauhaus Suite là một 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:

  • Trực quan kiến ​​trúc phần mềm (phụ thuộc inlcuding)
  • Thực thi các quy tắc kiến ​​trúc, ví dụ như phân lớp, hệ thống con, quy tắc gọi
  • Phát hiện bản sao - đánh dấu bản sao và dán (và mã sửa đổi)
  • Phát hiện mã chết
  • Phát hiện chu kỳ
  • Số liệu phần mềm
  • Kiểm tra kiểu mã

Các tính năng này có thể được 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 làm nổi bật 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.

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.