Does anybody know of a tool that I could use with a C# application to find possible Law of Demeter violations? I know that it would give a lot of false positives, but I think it could still be useful. Especially during the early design process.
If you're just looking for something.somethingelse.violation
, then you can use Visual Studio.
In the find dialog, check the box at the bottom to "Use" and select "Regular Expressions."
Not very robust, but you can use <[:a_]+\.([:a_]+\.)+[:a_]+
to find the pattern above.
A better tool would be grep
or similar on the solution directory, so you can use more powerful regex options like negative lookbehind, which would allow you to exclude things like using
directives and namespace
declarations.
You could probably very quickly write a .NET app that would recurse a given directory and search .cs and/or .vb files for same, using .NET Regex, which has lookarounds, but of course the advantage of using VS is that you remain right in the source code editor.
来源:https://stackoverflow.com/questions/3460418/law-of-demeter-violation-search-tool