Закон о нарушении закона Деметры?

Кто-нибудь знает инструмент, который я мог бы использовать с приложением C#, чтобы найти возможные нарушения закона Деметры? Я знаю, что это даст много ложных срабатываний, но я думаю, что это все еще может быть полезно. Особенно в начале процесса проектирования.

1 ответ

Решение

Если вы просто ищете something.somethingelse.violation, то вы можете использовать Visual Studio.

В диалоговом окне поиска установите флажок внизу "Использовать" и выберите "Регулярные выражения".

Не очень надежный, но вы можете использовать <[:a_]+\.([:a_]+\.)+[:a_]+ чтобы найти шаблон выше.

Лучшим инструментом будет grep или аналогичные в каталоге решений, так что вы можете использовать более мощные параметры регулярных выражений, такие как негативный lookbehind, которые позволят вам исключить такие вещи, как using директивы и namespace деклараций.

grep для Windows

Вероятно, вы могли бы очень быстро написать приложение.NET, которое получило бы заданный каталог и искать в них файлы.cs и / или.vb, используя.NET Regex, который имеет обходные пути, но, конечно, преимущество использования VS заключается в том, что вы остаетесь прямо в редакторе исходного кода.

Другие вопросы по тегам