Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>ITMO C++ Lab KitNew to Visual Studio Code? Get it now.
ITMO C++ Lab Kit

ITMO C++ Lab Kit

kewldan

| (0) | Free
C++ lab environment: clang-format (Google), clang-tidy, function complexity, GoogleTest, Makefile, git hooks and time tracking
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

🧪 ITMO C++ Lab Kit

Расширение VS Code для лаб по C++: стиль Google, clang-tidy как в CI курса, сложность функций с объяснением прямо в коде, тесты GoogleTest в панели «Тестирование», git-хуки, условие лабы с чек-листом и учёт времени. Работает с готовыми репозиториями лаб — и на Makefile, и на CMake.

✨ Highlights

  • 🎯 clang-tidy как в CI. Конфиг tidy-config берётся прямо из .github/workflows/*.yml — локальные замечания совпадают с теми, за которые CI снимает баллы.
  • 🧮 Сложность функций в коде. Над каждой функцией — цикломатическая и когнитивная сложность; по клику видно, какой if или && сколько добавил.
  • ✅ Тесты в один клик. Все TEST, TEST_F, TEST_P — в панели «Тестирование», упавшая проверка подсвечивается на строке EXPECT_….
  • 🏗️ CMake и Makefile. Сборка, запуск, тесты и проверка перед сдачей работают в обоих случаях без настройки.
  • 🪝 Git-хуки. Формат и clang-tidy перед коммитом, тесты перед push.
  • 📋 Условие лабы рядом с кодом. README.md или TASK.md в боковой панели, пункты превращаются в чек-лист с прогрессом.
  • ⏱️ Учёт времени и дедлайн в строке состояния.
  • 🌍 macOS и WSL, интерфейс на русском и английском.

🚀 Быстрый старт

  1. Поставьте инструменты:
    • 🍎 macOS: brew install llvm googletest pkg-config
    • 🐧 WSL / Ubuntu: sudo apt install clang clang-tidy clang-format clangd make cmake libgtest-dev pkg-config git
  2. Установите расширение: code --install-extension itmo-cpp-labkit-<версия>.vsix.
  3. Откройте папку с лабой и нажмите 🧪 Lab Kit в строке состояния → Проверить инструменты, затем Настроить окружение.
  4. Готово: кнопки ▶ 🧪 ☑ — в заголовке открытого .cpp.

💡 Хотите интерфейс на русском при английском VS Code? Поставьте labkit.language → ru.

🧭 Где что находится

Где Что
🧪 Lab Kit в строке состояния меню всех действий
▶ 🧪 ☑ в заголовке редактора запуск (⌘⌥R), тесты (⌘⌥T), проверка перед сдачей
⏱️ таймер в строке состояния время на лабу и дни до дедлайна, клик — отчёт
⚗️ иконка Lab Kit в боковой панели условие лабы с чек-листом
🧫 панель «Тестирование» отдельные тесты, запуск по одному
⚠️ вкладка «Проблемы» ошибки компилятора, clang-tidy и превышения сложности

📦 Возможности

⚙️ Настройка окружения

Lab Kit: Настроить окружение пишет в корень лабы:

  • .clang-format — Google style, C++20, 80 колонок;

  • .clang-tidy — по профилю labkit.clangTidy.profile:

    Профиль Что внутри
    auto (по умолчанию) конфиг CI, если он есть, иначе basic
    ci ровно tidy-config из .github/workflows
    basic bugprone, google, modernize, performance, readability, misc + имена по Google
    strict basic + cert, cppcoreguidelines, portability; предупреждения — ошибки
    custom файл преподавателя из labkit.clangTidy.customConfig
  • tests/.clang-tidy — послабления под макросы GoogleTest;

  • настройки VS Code: формат при сохранении, линейка на 80, clangd с clang-tidy той же версии LLVM, без двойных подсказок от cpptools.

🏗️ Сборка, запуск и проверка

Lab Kit сам понимает, как устроена лаба:

Лаба Сборка Запуск Тесты
🧱 CMake cmake -S . -B build, cmake --build build цель из CMake File API (если их несколько — выбор) ctest параллельно
🛠️ Makefile Lab Kit make make run make test

☑ Проверка перед сдачей: clang-format (если в репозитории есть .clang-format) → сборка → clang-tidy с конфигом из CI → тесты. Тесты преподавателя (tests/, *_test(s).cpp) форматом и clang-tidy не проверяются — только ваш код, как в CI курса.

Для лаб без системы сборки есть Lab Kit: Сгенерировать Makefile — make, run, test, fmt, fmt-check, tidy, check, flags, сборка с -Wall -Wextra -Wconversion, ASan и UBSan (выключить: make SAN=).

🧮 Сложность функций

  • 📊 CodeLens над функцией: сложность, когнитивная сложность, строки, параметры, вложенность.
  • 🖱️ Клик по CodeLens подсвечивает в коде всё, что добавляет сложность (if +1, for +3 (влож. 2)), и пишет итог у заголовка: «1 + 7 ветвлений = 8 · когн. 10».
  • 🔎 Наведение на имя функции — карточка «метрика / значение / порог».
  • ⚠️ Превышение порогов labkit.complexity.max* попадает в «Проблемы».
  • 📑 Отчёт о сложности — таблица по лабе без тестов, клик по файлу открывает функцию.

Анализатор работает без компилятора: мгновенно и даже на несобирающемся коде.

🧫 Тесты

  • Все TEST, TEST_F, TEST_P, TYPED_TEST — в панели «Тестирование»: лаба → файл → тест.
  • Запуск по одному, по файлу или всех; упавшая проверка — прямо на строке.
  • В CMake-лабах тестовые программы берутся из ctest (нужен gtest_discover_tests), экземпляры TEST_P собираются в один пункт.
  • Падение санитайзера или segfault показывается как ошибка с выводом.

🪝 Git-хуки

Lab Kit: Установить git-хуки:

  • pre-commit — clang-format по тому, что попадёт в коммит, и clang-tidy по изменённым файлам вне тестов;
  • pre-push — сборка и тесты (ctest или make test).

Прежний хук не затирается: он переезжает в pre-commit.local и запускается первым. Пропустить один раз: git commit --no-verify.

📋 Условие лабы

Иконка Lab Kit в боковой панели показывает TASK.md, ЗАДАНИЕ.md или README.md из корня лабы. Пункты списков становятся чек-листом с прогрессом «Выполнено 3 из 7», отметки хранятся в .labkit/task.json и не меняют файл условия. Если файл не нашёлся, панель покажет, где искала, и предложит выбрать файл вручную.

⏱️ Время и дедлайн

Время идёт, пока вы работаете в VS Code, и замирает через labkit.time.idleMinutes минут простоя. Дедлайн задаётся файлом .labkit.json в корне лабы:

{"name": "lab3", "deadline": "2026-11-01"}

Данные лежат в .labkit/, а сама папка добавляется в локальный .git/info/exclude — в коммиты не попадает.

🩺 Doctor

Lab Kit: Проверить инструменты проверяет clang-format, clang-tidy, clangd, clang++, make, cmake, git, GoogleTest и расширение clangd, сравнивает версию clang-tidy с tidy-version из CI и подсказывает команду установки под вашу систему.

🌍 Платформы и язык

  • 🍎 macOS — Homebrew LLVM находится автоматически.
  • 🪟 Windows — через WSL: «Reopen Folder in WSL», расширение работает на стороне WSL. Версионные бинарники (clang-tidy-18, /usr/lib/llvm-18) находятся сами, без clang++ Makefile соберёт через g++.
  • 🐧 Linux — так же, как WSL.
  • 🗣️ Язык: как у VS Code или labkit.language = ru / en. Названия команд и настроек VS Code показывает на языке редактора.

🔧 Настройки

Настройка По умолчанию Что делает
labkit.language auto язык интерфейса, Makefile и хуков
labkit.clangTidy.profile auto набор проверок clang-tidy
labkit.llvmBinDir — папка с clang-tidy, clang-format, clangd
labkit.complexity.max* 10 / 15 / 40 / 5 / 4 пороги сложности, когн. сложности, строк, параметров, вложенности
labkit.cmake.buildDir build папка сборки CMake
labkit.cmake.configureArgs — аргументы cmake -S . -B build
labkit.gitHooks.preCommit format, tidy проверки перед коммитом
labkit.gitHooks.prePush test проверки перед push
labkit.task.files TASK.md, …, README.md где искать условие
labkit.time.idleMinutes 5 когда перестать считать время

👩‍💻 Разработка

bun install
bun run check          # 🧹 Biome: линтер и форматирование
bun run fix            # ✍️ Biome: исправить и отформатировать
bun run typecheck      # 🔍 TypeScript
bun run test           # 🧪 юнит-тесты + полнота переводов
bun run test:vscode -- /путь/к/лабам   # 🖥️ smoke в настоящем VS Code
bun run package        # 📦 itmo-cpp-labkit-<версия>.vsix

CI на GitHub Actions прогоняет Biome, проверку типов, тесты и сборку .vsix на каждый push и pull request.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft