I dig fluent interfaces. There now is a fluent builder for rules, but I feel like the checking in general could be done via a fluent interface.
In my mind, it'd be like
var violations = ForProject("path/to/sln").Check()
.That.Project("SomeCoolProject").DoesNotReference("*Test")
.That.AllProjects.Import("Common.props")
.That.Project("*.Database").DoesNotReference("*").Except("EF.Core")
.Result()
This would allow different kinds of checks to weave together... instead of checking "horizontally" - e.g. all references, all duplicates, ... - you could check "vertically" for projects or layers.
Of course, actual names are subject for debate 😉
I dig fluent interfaces. There now is a fluent builder for rules, but I feel like the checking in general could be done via a fluent interface.
In my mind, it'd be like
This would allow different kinds of checks to weave together... instead of checking "horizontally" - e.g. all references, all duplicates, ... - you could check "vertically" for projects or layers.
Of course, actual names are subject for debate 😉