2013-08-27 4 views
5

Существует ли библиотека .NET (C#/F #) с открытым исходным кодом для абстрактного статического анализа? В настоящее время меня интересует постоянный алгоритм распространения.Библиотека константного распространения для .NET.

Он должен быть абстрактным (язык без изменений) и открытым исходным кодом, потому что я хочу использовать его в качестве основы для реализации пользовательского алгоритма.

Спасибо.

+0

Вы настаиваете на использовании открытого источника? –

ответ

2

Библиотека Mono.Cecil - это почти то, что вы хотите. Он открыт с открытым исходным кодом, реферативный язык и в качестве бонуса суперполируется, быстро и стабильно.

Но это не совсем то, что вы хотите, потому что Сесил не анализирует исходный код C#, VB.NET или F #, но анализирует файлы сборок (dll и exe) и код IL, содержащийся в сборках. Для многих областей статического анализа это было бы достаточно, но для постоянного распространения (я думаю, вы имеете в виду литеральную константу, такую ​​как const string STR = "MyString"; или const int INT = 12345;), во время компиляции происходит потеря информации, поскольку постоянное значение жестко задано вместо постоянного использования. Cecil также не подходит для анализа Abstract Syntax Tree.

Вы также можете посмотреть Microsoft Roslyn. В отличие от Cecil, Roslyn анализирует исходный код C# и VB.NET, очень хорошо подходит для анализа Abstract Syntax Tree, но он не является открытым исходным кодом, не поддерживает F # и, безусловно, может изменяться до тех пор, пока он не станет RTM, я бы скажем, в следующем году с Visual Studio 2014 (но это только моя догадка).

+0

Благодарим за ответ. Все библиотеки очень интересны. Но я нахожу более высокоуровневую абстракцию. – gsv

+0

Что вы подразумеваете под «Я нахожу более высокий уровень абстракции»? –

+0

Извините. Часть ответа была потеряна. Я имею в виду, что я пытаюсь найти что-то вроде pranlib для ocaml (https://code.google.com/p/ocaml-pranlib/): набор анализов, реализованный для абстрактных, не зависящих от языка структур данных. – gsv

1

Вы должны взглянуть на инфраструктуру Common Compiler Infrastructure: Code и AST project. Он предоставляет объектную модель для статического анализа в сборках .NET в независимой от языка форме.

Update

ТПП проекты разработаны более как библиотеки для компилятора и инструментальных авторов, а не из-из-коробки использования.

Возможно, вы ищете что-то более похожее на Mono.Gendarme, которое является механизмом статического анализа с открытым исходным кодом, аналогичным FxCop. Он поддерживается как часть коллекции проектов Mono-Tools.

+0

Спасибо. Хорошая идея. Осуществляются ли какие-либо анализы или планируются? – gsv

+0

@gsv Я не думаю, что есть, хотя я бы спросил у сопровождающего проекта о планах проекта. На самом деле, я не думаю, что проект CCI подходит вам, я думаю, вы ищете что-то вроде проекта Mono.Gendarme. См. Мое редактирование. –

Смежные вопросы