build steps:
- in directory with source - mkdir build
- cd build
- cmake ..
- make
- ./Tensor_Analyzer ~/projects/TensorAnalyser/test/ -I ~/projects/TensorAnalyser/test/include/ - as example
example output: "/home/baizikovich/projects/TensorAnalyser/test/1.cpp" header1.hpp header2.hpp header6.hpp(!) "/home/baizikovich/projects/TensorAnalyser/test/2.cpp" header1.hpp(!) header2.hpp(!) header6.hpp gcc version - 5.4.0 boost version - 1.58.0
Check it only on Ubuntu 16, windows - did not checked.
Формулировка задачи
Нужно написать анализатор файлов исходного кода на С++. Программа должна выводить дерево зависимостей и частоты включений файлов. Если найдены включения несуществующих файлов, то программа должна вывести пометку «(!)» после имени файла. В директории с исходными кодами могут быть вложенные папки (то есть обход должен производиться рекурсивно). Файлы имеют расширения ".h" и ".cpp" Требования к выполнению задачи
- Задача выполняется на С++ (стандарт C++03 или C++11 на выбор)
- Разрешается (и приветствуется) использование стандартной библиотеки языка С, стандартной библиотеки шаблонов (STL) и библиотеки BOOST
- Программа должна являться консольным приложением
- Программа должна собираться под Windows при помощи компилятора Microsoft Visual C++ (желательно MSVC 2010) и под Linux – с помощью компилятора GCC.
- Решение должно состоять из документа, описывающего реализацию, исходных кодов программы и исполняемого модуля, демонстрирующего работу класса. Входные параметры В качестве аргументов командной строки получает путь к каталогу с исходниками и пути для поиска заголовочных файлов (то есть файлы, включенные директивой вида #include <a.h> должны искаться в каталогах, указанных в параметрах командной строки) analyser <sources path> [options] Опции: -I – путь для поиска исходных файлов Пример вызова программы: analyser c:\mysources\ -I c:\mysources\includes -I c:\mylibrary (программа должна проанализировать исходники в каталоге c:\mysources, используя следующие пути для поиска заголовочных файлов: "c:\mysources\include" и "c:\mylibrary") Вывод результата Программа должна выводить дерево зависимостей исходных файлов и список файлов с частотами их включения в другие файлы. Список частот включений файлов должен быть отсортирован в порядке убывания частоты; записи с одинаковым значением частоты сортируются по алфавиту. Список частот отделён от дерева зависимостей пустой строкой.