Buildalyzer
Buildalyzer copied to clipboard
Making the library language-agnostic
Hey, this looks like a lovely library, than you for easing the pain of setting up design-time builds!
We are working on a new .NET language, Draco and we'd love to use this library to extract references for example for our language server. Unfortunately from what I gathered, the library has only the 3 main .NET langs hardcoded for command parsing: C#, VB and F#, so we can't exactly extract that data for a custom language.
Is there any chance for this limitation to be eliminated? While I didn't dig deep into the library, I imagine we'd need to introduce an interface like so:
interface ICommandParser
{
// Lang name tag, optional
string Language { get; }
// Returns true, if this parser can handle the compiler that's being invoked. Replaces ProcessFscCommandLine, ProcessCscCommandLine, ...
bool IsLanguageCompilerInvocation(object sender, BuildMessageEventArgs e);
// Replaces Compiler.CommandLine.Parse
CompilerCommand Parse(DirectoryInfo? baseDir, string commandLine);
}
And then have a collection of these language parsers, AnalyzerManager
or AnalyzerManagerOptions
looks like an OK place for this. By default, the existing languages (C#, VB and F#) would have an implementation for this interface, but consumers of the package could implement this interface for any language they'd want.
Let me know what you think!