Инструмент статического анализа PHP, который находит ошибки в коде, не запуская его.
BurtonQin/lockbud
Статический анализатор, который выявляет дедлоки, use-after-free, invalid-free и возможные места паники в проектах на Rust.
- Звёзды
- 590
- Форки
- 40
- Открытые issues
- 7
- Последний коммит
- 7 дней назад
Что это?
lockbud — инструмент статического анализа Rust, который ищет ошибки конкурентности и работы с памятью, не запуская программу. Он отслеживает время жизни блокировок по графу вызовов crate, чтобы находить повторные захваты блокировок и конфликтующий порядок их захвата, способные привести к дедлокам, а также проверяет нарушения атомарности и неправильное использование Condvar. Детекторы ошибок памяти выявляют use-after-free и invalid-free, а отдельный режим сообщает о возможных местах паники.
Инструмент построен на внутренних компонентах rustc, поэтому его нужно запускать с той же nightly-версией toolchain, для которой он предназначен; сейчас это nightly-2026-02-07. Его можно вызвать напрямую через скрипт detect или как подкоманду cargo (cargo lockbud). Также доступен Docker-образ, и инструмент можно запускать в CI. Поддерживаются Mutex и RwLock из std::sync, parking_lot и spin.
Проект представляет собой артефакт статьи TSE'24 о проблемах безопасности в реальных проектах на Rust. Автор отмечает, что детекторы ошибок памяти и паники дают много ложных срабатываний из-за стандартной библиотеки и зависимостей, поэтому рекомендуется ограничивать анализ собственным crate с помощью -l.
Ключевые возможности
- 01Выявляет повторные захваты блокировок и дедлоки из-за конфликтующего порядка их захвата для блокировок std, parking_lot и spin.
- 02Сообщает об ошибках памяти use-after-free и invalid-free.
- 03Выявляет нарушения атомарности и неправильное использование Condvar.
- 04Показывает возможные места паники в коде на Rust.
- 05Запускается как отдельный скрипт, подкоманда cargo или Docker-образ.
Сценарии использования
- Проверка кодовой базы на Rust, использующей Mutex или RwLock, на возможные дедлоки перед выпуском.
- Добавление проверки на дедлоки в CI-пайплайны с помощью cargo lockbud или Docker-образа.
- Изучение методов статического выявления ошибок конкурентности в Rust.
Быстрый старт
- 1
Установите необходимые компоненты nightly-тулчейна
rustup +nightly-2026-02-07 component add rust-src rustc-dev llvm-tools-preview - 2
Клонируйте репозиторий
git clone https://github.com/BurtonQin/lockbud.git - 3
Перейдите в каталог проекта
cd lockbud - 4
Установите lockbud из локального исходного кода
cargo +nightly-2026-02-07 install --path .
Что важно знать
- Сборку необходимо выполнять с точной поддерживаемой версией rustc nightly, и для анализа проекта нужно использовать ту же версию.
- Обнаружение взаимоблокировок охватывает только типы Mutex и RwLock из std, parking_lot и spin.
- Детекторы проблем с памятью и panic дают много ложных срабатываний, а детектор panic сообщает почти обо всех местах возникновения panic.
- Анализ указателей неточен, поэтому результаты могут содержать ложные срабатывания.
В подборках
Темы
Частые вопросы
- Что такое lockbud?
- Статический анализатор, который выявляет дедлоки, use-after-free, invalid-free и возможные места паники в проектах на Rust. lockbud — инструмент статического анализа Rust, который ищет ошибки конкурентности и работы с памятью, не запуская программу. Он отслеживает время жизни блокировок по графу вызовов crate, чтобы находить повторные захваты блокировок и конфликтующий порядок их захвата, способные привести к дедлокам, а также проверяет нарушения атомарности и неправильное использование Condvar. Детекторы ошибок памяти выявляют use-after-free и invalid-free, а отдельный режим сообщает о возможных местах паники.
- lockbud можно использовать бесплатно? Какая у него лицензия?
- lockbud распространяется с открытым исходным кодом под лицензией BSD-3-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- lockbud всё ещё поддерживается?
- Активно поддерживается. Последний коммит в lockbud — 1 нояб. 2026 г..
- Для чего можно использовать lockbud?
- Проверка кодовой базы на Rust, использующей Mutex или RwLock, на возможные дедлоки перед выпуском. Добавление проверки на дедлоки в CI-пайплайны с помощью cargo lockbud или Docker-образа. Изучение методов статического выявления ошибок конкурентности в Rust.
- Как установить lockbud?
- Установите необходимые компоненты nightly-тулчейна: rustup +nightly-2026-02-07 component add rust-src rustc-dev llvm-tools-preview Клонируйте репозиторий: git clone https://github.com/BurtonQin/lockbud.git Перейдите в каталог проекта: cd lockbud Установите lockbud из локального исходного кода: cargo +nightly-2026-02-07 install --path .
- Где скачать lockbud?
- Исходный код и инструкции по установке — на GitHub: https://github.com/BurtonQin/lockbud
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Реализация C и C++ с защитой памяти: компилирует существующий код почти без изменений и превращает ошибки работы с памятью в панику.
Инструмент статического анализа, который находит и помогает исправлять проблемы безопасности в конфигурациях CI/CD, включая GitHub Actions, Dependabot и pre-commit.
Сканер секретов на Rust, который находит утёкшие учётные данные, проверяет, активны ли они, определяет доступы и поддерживает отзыв.
Сканер безопасности на Rust для аудита MCP-серверов и файлов навыков AI-агентов на предмет prompt injection, отравления инструментов, утечки секретов и рисков цепочки поставок.
Инструмент статического анализа, который проверяет исходный код на Go на распространённые уязвимости и небезопасные практики программирования.