Skip to content

cofofprom/Cformatter

Repository files navigation

Cformatter


Программа, анализирующая и обрабатывающая код другой программы на Си.


Формат входных данных

  • На вход в качестве аргументов командной функции вводятся один или несколько файлов формата .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

  • Форматирует код в более удобный вид
  • Убирает лишние табы, пробелы, переносы
  • Добавляет перенос строки и убирает пустые строки

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5