2013-08-27 50 views
5

Thư viện .NET (C#/F #) nguồn mở có tồn tại không? Hiện tại tôi quan tâm đến thuật toán tuyên truyền liên tục.Thư viện tuyên truyền không đổi cho .NET

Nó phải là trừu tượng (ngôn ngữ riêng) và nguồn mở vì tôi muốn sử dụng nó làm cơ sở cho việc triển khai thuật toán tùy chỉnh.

Cảm ơn.

+0

Bạn nhấn mạnh vào nguồn mở? –

Trả lời

2

Thư viện Mono.Cecil gần như là những gì bạn muốn. Nó là nguồn mở, ngôn ngữ được trừu tượng hóa và như một phần thưởng, nó được đánh bóng siêu, nhanh và ổn định. Tuy nhiên, nó không phải là chính xác những gì bạn muốn bởi vì Cecil không phân tích mã nguồn C#, VB.NET hoặc F #, nhưng nó phân tích các tập tin (dll và exe) và mã IL chứa trong các assembly. Đối với nhiều vùng phân tích tĩnh, nó sẽ là đủ, nhưng đối với việc truyền liên tục (tôi đoán bạn có nghĩa là hằng số chữ như const string STR = "MyString"; hoặc const int INT = 12345;) có mất thông tin tại thời gian biên dịch vì giá trị không đổi được mã hóa cứng thay cho cách sử dụng liên tục. Cecil cũng không thích hợp cho phân tích Abstract Syntax Tree.

Bạn cũng có thể xem Microsoft Roslyn. Trái ngược với Cecil, Roslyn phân tích mã nguồn C# và VB.NET, rất phù hợp với phân tích Abstract Syntax Tree, nhưng nó không phải là mã nguồn mở, không hỗ trợ F # và chắc chắn có thể thay đổi cho đến khi nó trở thành RTM, nói năm tới với Visual Studio 2014, (nhưng đây chỉ là phỏng đoán của tôi).

+0

Cảm ơn bạn đã trả lời. Tất cả các thư viện đều rất thú vị. Nhưng tôi tìm thấy sự trừu tượng cao cấp hơn. – gsv

+0

Ý của bạn là gì bởi "Tôi tìm thấy sự trừu tượng mức cao hơn"? –

+0

Xin lỗi. Một phần của câu trả lời đã bị mất. Tôi có nghĩa là tôi cố gắng tìm thấy somethink như pranlib cho ocaml (https://code.google.com/p/ocaml-pranlib/): tập hợp các phân tích được triển khai cho các cấu trúc dữ liệu trừu tượng, ngôn ngữ-independed. – gsv

1

Bạn nên xem Cơ sở hạ tầng biên dịch chung: Mã và thành phần AST project. Nó cung cấp một mô hình đối tượng để thực hiện phân tích tĩnh trên các hội đồng .NET dưới dạng một ngôn ngữ độc lập.

Cập nhật

CCI dự án được thiết kế nhiều như thư viện cho trình biên dịch và dụng cụ tác giả chứ không phải sử dụng out-of-the-box.

Có lẽ bạn đang tìm kiếm thứ gì đó giống như Mono.Gendarme là một công cụ phân tích tĩnh nguồn mở, tương tự như FxCop. Nó được duy trì như một phần của bộ sưu tập các dự án Mono-Tools.

+0

Cảm ơn. Ý kiến ​​đó hay đấy. Có bất kỳ phân tích nào được triển khai hoặc lên kế hoạch không? – gsv

+0

@gsv Tôi không nghĩ rằng mặc dù tôi sẽ yêu cầu người bảo trì dự án lên kế hoạch cho dự án. Trên thực tế tôi không nghĩ rằng dự án CCI là phù hợp cho bạn, tôi nghĩ rằng bạn đang tìm kiếm một cái gì đó giống như dự án Mono.Gendarme. Xem chỉnh sửa của tôi. –