Как разработать инструмент проверки кода?
Для проекта колледжа я должен создать инструмент, который проверяет правильность кода C#. Под валидностью подразумевается проверка того, все ли переменные следуют за верблюжьим регистром или проверка того, начинаются ли имена классов с заглавной буквы и так далее. Правила, которые должны соблюдаться, могут быть различными. Самая большая проблема, которую я имею, состоит в получении таких деталей, как имена классов, имена методов, их свойства и номера строк из исходного кода. Итак, я придумал следующие решения,
- Использование синтаксического анализатора языка (например, COCO/R или ANTLR)
- Использование регулярных выражений
- Путем кодирования в соответствии с C# грамматическим файлом... Просто если еще и так далее...
- Reflection API - надеюсь, это не сработает
Каков наилучший способ сделать это.. или есть ли альтернатива?
Благодарю вас..
1 ответ
Я лично пошел бы с ANTLR по следующим причинам:
- Это проще в использовании, чем регулярные выражения, и это более мощный
- С помощью ANTLR проще реализовать сложную логику в соответствии с вашими правилами
- Код результата будет легче изменить
- Вы можете отслеживать текущий номер строки
- Поскольку вам не нужно компилировать код C#, вам не нужно реализовывать всю грамматику в ANTL. Вы можете предположить, что код действителен, и пропустить некоторые его части, такие как инициализация переменных, условия, LINQ и т. Д., И оставить только те части грамматики, которые вам действительно нужны для проверки.
Конечно, ANTLR потребует некоторого обучения, и вам, возможно, придется потратить день или два, играя с ним. Если вы не знаете ANTLR и у вас мало времени, вы можете попытаться взломать задачу, используя некоторые регулярные выражения и C#/Java/ и т.д. код.