Программа, анализирующая и обрабатывающая код другой программы на Си.
- На вход в качестве аргументов командной функции вводятся один или несколько файлов формата .h, .c или .cpp.
C:\CLionProjects\Cformatter\cmake-build-debug\Cformatter.exe /f cio.c
- В программе есть объявления собственных типов данных, собственные функции пользователя.
- Для каждого введённого файла выводится его отформатированная версия в файл вида |имя_файла|__out.c
- В консоль печатается максимальная вложенность циклов, содержит ли программа рекурсивные функции, обозначены ли все переменнные правильно, неиспользуемые функции, корректны ли все имена переменных.
1. MaxLoopNesting
- Находит максимальную вложенность циклов в коде
- Ищет все циклы в коде, затем рекурсивно пробегается по каждому, увеличивая счётчик на 1 с переходом на каждый новый вложенный цикл
- Получить результат можно при помощи вызова функции printMaxLoopNesting, в качестве аргумента для которой дается указатель на char строку кода программы
2. CheckVariables
- printVariables выводит либо все переменные, которым не присвоено начальное значение, либо сообщение о том, что таковых нет
- checkName выводит все переменные с неправильными именами, либо сообщает, что таковых нет
- printUnusedVariables и printUnusedFunctions выводят неиспользованные переменные и функции соответственно
3. FindRecursion
- checkFunctionForRecursion определяет, есть ли в коде программы рекурсивные функции
4. Cmd Parser
- Обрабатывает параметры командной строки, и составляет список полных путей к файлам, заданным после флага /f
- Сканирует на наличие файлов директории и субдиректории указанные с флагом /d
- Путь к директории должен быть полным
5. ChageComments
- Все однострочные комментарии заменяет многострочными
6. CamelAndPascalCase
- Заменяет обьявление переменных произвольного типа на camelStyle
- Заменяет обьявление пользовательских типов (псевдонимов) и функций приозвольного типа на PascalStyle
7. Formatter
- Форматирует код в более удобный вид
- Убирает лишние табы, пробелы, переносы
- Добавляет перенос строки и убирает пустые строки