Библиотека 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 (но это только моя догадка).
Вы настаиваете на использовании открытого источника? –