К основному содержанию
скилл CX Codex

static-analysis — скилл для Claude Code: что делает и как установить

Настраивает статический анализ кода на C и C++ через clang-tidy, cppcheck и scan-build. Скилл помогает отобрать проверки и убрать ложные срабатывания.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill static-analysis -a claude-code
Открыть на GitHub

Что делает static-analysis

Скилл даёт инструкции по запуску трёх анализаторов для C и C++. Внутри собраны правила для .clang-tidy и готовый шаг для GitHub Actions. Дерево решений распределяет проверки по категориям. Так проще отделить аудит безопасности cert-* от модернизации синтаксиса в modernize-*.

Для работы clang-tidy и cppcheck требуется файл compile_commands.json. Без него запустить полный анализ не выйдет. Скилл показывает генерацию базы через флаг CMAKE_EXPORT_COMPILE_COMMANDS в CMake либо через утилиты bear и compiledb. Ложные срабатывания убираются точечно через комментарии NOLINT, атрибут [[clang::suppress]] или регулярные выражения в HeaderFilterRegex.

Глубокие дефекты отслеживает утилита scan-build. Она находит утечки памяти и нулевые указатели на сложных путях выполнения, перехватывая вызовы Make или CMake. Итоговый отчёт сохраняется в HTML.

Какие задачи решает

  • сгенерировать compile_commands.json для сборки на CMake или Make
  • настроить категории проверок и автоисправления в clang-tidy
  • подавить ложные срабатывания с помощью NOLINT и HeaderFilterRegex
  • встроить cppcheck и run-clang-tidy в пайплайн GitHub Actions
  • запустить межпроцедурный поиск ошибок через scan-build

Примеры запросов агенту

  • Помоги настроить .clang-tidy для проекта на C++17 с упором на bugprone и modernize
  • Как сгенерировать compile_commands.json через CMake и запустить run-clang-tidy?
  • Как подавить ложное предупреждение cppcheck в исходном коде?

Как установить static-analysis

1Через Skills CLI (Vercel)

npx skills add mohitmishra786/low-level-dev-skills --skill static-analysis -a claude-code

2Вручную: положить файлы

~/.claude/skills/static-analysis/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/static-analysis/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора62

cmake Скилл настраивает сборку проектов на C и C++ по правилам современного CMake. Пригодится при написании CMakeLists.txt, подключении библиотек и сборке с санитайзерами. CX Codex +1 1 700установок gdb Ведёт агента по сессии GDB: точки останова, просмотр переменных, разбор падений, реверс-отладка и удалённая отладка через gdbserver. CX Codex +1 936установок llvm Скилл для работы с LLVM IR: генерация промежуточного представления, прогон пассов через opt, понижение до ассемблера через llc и разбор упущенных оптимизаций. CX Codex +1 899установок core-dumps Учит агента включать core dumps, грузить их в GDB или LLDB и снимать стек без повторного запуска упавшей программы. CX Codex +1 764установок linux-perf Ведёт агента по perf на Linux: сэмплирование, счётчики железа, поиск горячих функций и сборка флеймграфов. Полезен, когда программа тормозит, а непонятно где. CX Codex +1 753установок clang Настраивает компилятор Clang, флаги оптимизации и линковщик lld в проектах на C и C++. Помогает включить статический анализ и ThinLTO. CX Codex +1 722установок gcc Подсказывает агенту флаги GCC для debug и release, разбирает ошибки компиляции и настраивает LTO с PGO. CX Codex +1 690установок cross-gcc Проведёт агента через настройку кросс-компиляции на GCC: триплеты, sysroot, pkg-config, тесты под QEMU и разбор типовых ошибок. CX Codex +1 682установок

Похожие

dart-run-static-analysis dart-lang Запускает dart analyze для поиска ошибок и dart fix --apply для автоисправления предупреждений линтера. Помогает проверять качество кода на Dart перед коммитами. CX Codex +1 19 000установок detect-static-dependencies dotnet Ищет в C# и .NET-коде статические зависимости, которые мешают тестам. Нужен перед добавлением unit-тестов или планированием рефакторинга. CX Codex +1 3 400установок variant-analysis trailofbits Ищет в репозитории другие проявления уже найденной ошибки. Нужен после уязвимости или логического дефекта, когда требуется проверить похожий код. CX Codex +1 6 400установок constant-time-analysis trailofbits Статически проверяет ассемблер и байткод криптографического кода на утечки по времени. Находит деление на секретные данные и ранние выходы из сравнений. CX Codex +1 5 400установок malware-analysis-dragonflyTomb-avast reason-machines Скилл для анализа репозиториев, которые выдают себя за установщики антивируса. Помогает отличить подделку от настоящего дистрибутива. CX Codex +1 1 000установок avast-premium-security-analysis reason-machines Скилл для изучения компонентов Avast Premium Security и приёмов антивирусной защиты. Пригодится, если разбираете архитектуру защитного софта в изолированной среде. CX Codex +1 1 100установок

Рядом в теме «Код-ревью и рефакторинг»

Всё по теме «Код-ревью и рефакторинг» →

Вопросы о static-analysis

Как установить static-analysis в Claude Code?

Выполните команду npx skills add mohitmishra786/low-level-dev-skills --skill static-analysis -a claude-code в терминале.

Что делает скилл static-analysis?

Он помогает настроить утилиты clang-tidy, cppcheck и scan-build для проверки кода на C и C++. Скилл подсказывает нужные флаги, организует фильтрацию предупреждений и даёт конфигурации для CI.

Что требуется для запуска clang-tidy по всей кодовой базе?

Проекту необходима база данных компиляции compile_commands.json. В CMake её создают с флагом -DCMAKE_EXPORT_COMPILE_COMMANDS=ON, а при сборке через Make используют утилиты bear или compiledb.

Исходный текст

SKILL.md · MIT
---
name: static-analysis
description: Static analysis skill for C/C++ codebases. Use when hardening code quality, triaging noisy builds, running clang-tidy, cppcheck, or scan-build, interpreting check categories, suppressing false positives, or integrating static analysis into CI. Activates on queries about clang-tidy checks, cppcheck, scan-build, compile_commands.json, code hardening, or static analysis warnings.
---

# Static Analysis

## Purpose

Guide agents through selecting, running, and triaging static analysis tools for C/C++ — clang-tidy, cppcheck, and scan-build — including suppression strategies and CI integration.

## Triggers

- "How do I run clang-tidy on my project?"
- "What clang-tidy checks should I enable?"
- "cppcheck is reporting false positives — how do I suppress them?"
- "How do I set up scan-build for deeper analysis?"
- "My build is noisy with static analysis warnings"
- "How do I generate compile_commands.json for clang-tidy?"

## Workflow

### 1. Generate compile_commands.json

clang-tidy requires a compilation database:

```bash
# CMake (preferred)
cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
ln -s build/compile_commands.json .

# Bear (for Make-based projects)
bear -- make

# compiledb (alternative for Make)
pip install compiledb
compiledb make
```

### 2. Run clang-tidy

```bash
# Single file
clang-tidy src/foo.c -- -std=c11 -I include/

# Whole project via compile_commands.json
run-clang-tidy -p build/ -j$(nproc)

# With specific checks enabled
clang-tidy -checks='bugprone-*,modernize-*,performance-*' src/foo.cpp

# Apply auto-fixes
clang-tidy -checks='modernize-use-nullptr' -fix src/foo.cpp
```

### 3. Check category decision tree

```text
Goal?
├── Find real bugs            → bugprone-*, clang-analyzer-*
├── Modernise C++ code        → modernize-*
├── Follow core guidelines    → cppcoreguidelines-*
├── Catch performance issues  → performance-*
├── Security hardening        → cert-*, hicpp-*
└── Readability / style       → readability-*, llvm-*
```

| Category | Key checks | What it catches |
|----------|-----------|-----------------|
| `bugprone-*` | `use-after-move`, `integer-division`, `suspicious-memset-usage` | Likely bugs |
| `modernize-*` | `use-nullptr`, `use-override`, `use-auto` | C++11/14/17 idioms |
| `cppcoreguidelines-*` | `avoid-goto`, `pro-bounds-*`, `no-malloc` | C++ Core Guidelines |
| `performance-*` | `unnecessary-copy-initialization`, `avoid-endl` | Performance regressions |
| `clang-analyzer-*` | `core.*`, `unix.*`, `security.*` | Path-sensitive bugs |
| `cert-*` | `err34-c`, `str51-cpp` | CERT coding standard |

### 4. .clang-tidy configuration file

```yaml
# .clang-tidy — place at project root
Checks: >
  bugprone-*,
  modernize-*,
  performance-*,
  -modernize-use-trailing-return-type,
  -bugprone-easily-swappable-parameters
WarningsAsErrors: 'bugprone-*,clang-analyzer-*'
HeaderFilterRegex: '^(src|include)/.*'
CheckOptions:
  - key: modernize-loop-convert.MinConfidence
    value: reasonable
  - key: readability-identifier-naming.VariableCase
    value: camelCase
```

### 5. Suppress false positives

```cpp
// Suppress a single line
int result = riskyOp(); // NOLINT(bugprone-signed-char-misuse)

// Suppress a block
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
constexpr int BUFFER_SIZE = 4096;

// Suppress whole function
[[clang::suppress("bugprone-*")]]
void legacy_code() { /* ... */ }
```

Or in `.clang-tidy`:

```yaml
# Exclude third-party directories
HeaderFilterRegex: '^(src|include)/.*'
# Disable specific checks
Checks: '-bugprone-easily-swappable-parameters'
```

### 6. Run cppcheck

```bash
# Basic run
cppcheck --enable=all --std=c11 src/

# With compile_commands.json
cppcheck --project=build/compile_commands.json

# Include specific checks and suppress noise
cppcheck --enable=warning,performance,portability \
         --suppress=missingIncludeSystem \
         --suppress=unmatchedSuppression \
         --error-exitcode=1 \
         src/

# Generate XML report for CI
cppcheck --xml --xml-version=2 src/ 2> cppcheck-report.xml
```

| `--enable=` value | What it checks |
|-------------------|----------------|
| `warning` | Undefined behaviour, bad practices |
| `performance` | Redundant operations, inefficient patterns |
| `portability` | Non-portable constructs |
| `information` | Configuration and usage notes |
| `all` | Everything above |

### 7. Path-sensitive analysis with scan-build

```bash
# Intercept a Make build
scan-build make

# Intercept CMake build
scan-build cmake --build build/

# Show HTML report
scan-view /tmp/scan-build-*/

# With specific checkers
scan-build -enable-checker security.insecureAPI.gets \
           -enable-checker alpha.unix.cstring.BufferOverlap \
           make
```

scan-build finds deeper bugs than clang-tidy: use-after-free across functions, dead stores from logic errors, null dereferences on complex paths.

### 8. CI integration

```yaml
# GitHub Actions
- name: Static analysis
  run: |
    cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
    run-clang-tidy -p build -j$(nproc) -warnings-as-errors '*'

- name: cppcheck
  run: |
    cppcheck --enable=warning,performance \
             --suppress=missingIncludeSystem \
             --error-exitcode=1 \
             src/
```

For clang-tidy check details, see [references/clang-tidy-checks.md](references/clang-tidy-checks.md).

## Related skills

- Use `skills/compilers/clang` for Clang toolchain and diagnostic flags
- Use `skills/compilers/gcc` for GCC warnings as complementary analysis
- Use `skills/runtimes/sanitizers` for runtime bug detection alongside static analysis
- Use `skills/build-systems/cmake` for `CMAKE_EXPORT_COMPILE_COMMANDS` setup

© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой