Как разработать инструмент проверки кода?

Для проекта колледжа я должен создать инструмент, который проверяет правильность кода C#. Под валидностью подразумевается проверка того, все ли переменные следуют за верблюжьим регистром или проверка того, начинаются ли имена классов с заглавной буквы и так далее. Правила, которые должны соблюдаться, могут быть различными. Самая большая проблема, которую я имею, состоит в получении таких деталей, как имена классов, имена методов, их свойства и номера строк из исходного кода. Итак, я придумал следующие решения,

  1. Использование синтаксического анализатора языка (например, COCO/R или ANTLR)
  2. Использование регулярных выражений
  3. Путем кодирования в соответствии с C# грамматическим файлом... Просто если еще и так далее...
  4. Reflection API - надеюсь, это не сработает

Каков наилучший способ сделать это.. или есть ли альтернатива?

Благодарю вас..

1 ответ

Решение

Я лично пошел бы с ANTLR по следующим причинам:

  1. Это проще в использовании, чем регулярные выражения, и это более мощный
  2. С помощью ANTLR проще реализовать сложную логику в соответствии с вашими правилами
  3. Код результата будет легче изменить
  4. Вы можете отслеживать текущий номер строки
  5. Поскольку вам не нужно компилировать код C#, вам не нужно реализовывать всю грамматику в ANTL. Вы можете предположить, что код действителен, и пропустить некоторые его части, такие как инициализация переменных, условия, LINQ и т. Д., И оставить только те части грамматики, которые вам действительно нужны для проверки.

Конечно, ANTLR потребует некоторого обучения, и вам, возможно, придется потратить день или два, играя с ним. Если вы не знаете ANTLR и у вас мало времени, вы можете попытаться взломать задачу, используя некоторые регулярные выражения и C#/Java/ и т.д. код.

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