FST
FST Documentation

Linux Windows


Утилита fst предназначена для быстрого поиска информации в любом наборе текстовых файлов. Она индексирует файлы, указанные в конфигурационном файле config.json, и затем обрабатывает запросы из request.json, формируя результаты в answers.json. По каждому запросу утилита находит наиболее релевантные файлы (в пределах заданного лимита) и сортирует их по специальному рангу. Используется оптимизированный алгоритм поиска, обеспечивающий высокую скорость обработки даже больших объёмов данных. Утилита запускается без аргументов — достаточно разместить все необходимые файлы в одной директории с исполняемым файлом.

Стек используемых технологий:

  • Язык программирования: C++, bash
  • Компиляторы: GCC, Clang, MSVC++
  • Инструменты для тестирования: Google Test
  • Инструменты для сборки и автоматизации: CMake
  • Инструменты для профилирования и анализа: Clang-tidy, lcov
  • Операционные системы: Linux, Windows
  • Библиотеки:
    • Google Test – для написания юнит тестов
    • thread-pool – для реализации многопоточного индексирования файлов
    • nlohmann/json – для работы c json-файлами
  • Документация: Doxygen

Сборка

Linux

Убедитесь что установлены все необходимые инструменты:

sudo apt update
sudo apt install build-essential cmake gcc g++ clang lcov clang-tidy

Выполните следующие команды для сборки:

cmake -S . -B ./build -DCMAKE_BUILD_TYPE=Release
cmake --build ./build

Запустите FST следующей командой:

./build/fst

После успешного завершения работы, проверьте появившийся файл ./answers.json:

cat ./answers.json

Тестирование и покрытие кода

Для запуска тестов выполните следующие команды:

cmake -S . -B ./coverage_build -DCODE_COVERAGE=ON -DCMAKE_BUILD_TYPE=Debug
cd ./coverage_build
cmake --build .
ctest

Оставаясь в билд директории, выполните скрипт (может не работать, если вы используете WSL):

../coverage.sh

Отчет о покрытии появится в директории ./coverage_html, используйте любой браузер для просмотра, например, firefox:

firefox ./coverage_html/index.html

Windows

MinGW

cmake -G "MinGW Makefiles" -S . -B .\win_build
cmake --build .\win_build
.\win_build\fst

Developer Command Prompt for VS

Запустите Developer Command Prompt for VS, перейдите в корень репозитория и выполните:

cmake -S . -B .\win_build
cmake --build .\win_build
.\win_build\Debug\fst.exe

Структура проекта

Подробное описание всех классов, структур и функций, а также графы их взаимодействия можно найти в документации.

Также документация доступна офлайн, для этого откройте файл ./docs/index.html любым браузером, например, firefox:

firefox ./docs/index.html