Аналіз коду за допомогою AST: Пошук вразливостей та антипатернів

Опис

Просунутий аналіз коду з AST-Grep

Цей інструмент є повноцінним посібником із використання AST (Abstract Syntax Tree) для структурного аналізу програмного коду. На відміну від звичайного пошуку тексту, цей підхід дозволяє ідентифікувати складні логічні помилки та вразливості, аналізуючи саму структуру вашого проекту.

Для кого цей промпт?

  • Розробникам: Для автоматизації процесу Code Review та виявлення антипатернів у великих кодових базах.
  • Спеціалістам з кібербезпеки: Для швидкого пошуку Hardcoded секретів, слабких токенів та вразливих функцій.
  • DevOps інженерам: Для впровадження автоматичних перевірок якості коду в CI/CD пайплайни.

Головні переваги

  • Точність: Використання структурного розпізнавання патернів мінімізує помилкові спрацьовування.
  • Готові шаблони: Включає готові правила для React (залежності хуків), безпеки та глибокої вкладеності.
  • Універсальність: Підходить для JavaScript, TypeScript та інших мов, що підтримуються ast-grep.
>_ Промпт
# Аналіз коду AST-Grep

Структурне зіставлення патернів AST ідентифікує проблеми в коді через розпізнавання структури, а не через рядкове читання. Структура коду виявляє приховані зв'язки, вразливості та антипатерни, які пропускає поверхневий огляд.

## Конфігурація

- **Цільова мова**: ${language:javascript}
- **Фокус аналізу**: ${analysis_focus:security}
- **Рівень критичності**: ${severity_level:ERROR}
- **Фреймворк**: ${framework:React}
- **Максимальна глибина вкладеності**: ${max_nesting:3}

## Попередні вимоги

```bash
# Встановити ast-grep (якщо немає)
npm install -g @ast-grep/cli
```

## Дерево рішень: Коли використовувати AST аналіз

```
Потрібен рев'ю коду?
|
+-- Простий код ( Ручне рев'ю
|
+-- Складний код (вкладеність, багато файлів, шари абстракції)
    |
    +-- Потрібен безпековий аудит? --> Використовувати security патерни
    +-- Аналіз продуктивності? --> Використовувати performance патерни
    +-- Структурна якість? --> Використовувати structure патерни
```

## Основні патерни

### Безпека: Hardcoded секрети

```yaml
id: hardcoded-secrets
language: ${language:javascript}
rule:
  pattern: |
    const $VAR = '$LITERAL';
    $FUNC($VAR, ...)
  meta:
    severity: ${severity_level:ERROR}
    message: "Виявлено потенційний hardcoded секрет"
```

### Продуктивність: ${framework:React} Hook Dependencies

```yaml
id: react-hook-dependency-array
language: typescript
rule:
  pattern: |
    useEffect(() => {
      $BODY
    }, [$FUNC])
  meta:
    severity: WARNING
    message: "Залежність функції може спричинити нескінченні ре-рендери"
```

### Структура: Глибока вкладеність

```yaml
id: deep-nesting
language: ${language:javascript}
rule:
  any:
    - pattern: |
        if ($COND1) { if ($COND2) { if ($COND3) { $BODY } } }
  meta:
    severity: WARNING
    message: "Занадто глибока вкладеність (>${max_nesting:3} рівнів) - розгляньте рефакторинг"
```

## Запуск аналізу

```bash
# Сканування безпеки
ast-grep run -r sg-rules/security/

# Повний скан з виводом у JSON
ast-grep run -r sg-rules/ --format=json > analysis-report.json
```
Категорії:
Моделі:
Any
Формат виводу: