Promt-Hub
Главная / Программирование и IT / Комплексный аудит Go-кода: Forensic-анализ

Комплексный аудит Go-кода: Forensic-анализ

Описание промпта
Промпт для глубокого анализа Go-кода на предмет безопасности, производительности и соответствия стандартам.
Что делает этот промпт
  • Этот промпт превращает LLM в экспертного аудитора Go-кода. Он требует детального анализа типов, безопасности, обработки ошибок и конкурентности на уровне forensic-исследования.
Преимущества
  • Помогает выявить скрытые баги, утечки памяти, race conditions и нарушения стандартов Go, которые часто пропускаются при поверхностном ревью.
Для кого подходит
  • Go-разработчики, Tech Leads, Security Auditors, Code Reviewers.
Инструкция по использованию промпта
Вставь код в переменную {{CODE}} после инструкции. Если код большой, разбей его на части и передавай последовательно, указывая контекст предыдущих частей. Требуй структурированный ответ по секциям аудита.
Что нужно предоставить
Требуется доступ к исходному коду Go. Эффективен для проектов среднего и большого размера. Рекомендуется использовать с моделями, поддерживающими длинный контекст.
Что ожидать в результате
Детальный отчет с указанием конкретных строк кода, типов проблем, рисков и примеров исправлений. Список рекомендаций по улучшению архитектуры и безопасности.
Рекомендации
Для лучшего результата добавь информацию о версии Go и используемых библиотеках. Укажи, если есть специфические требования к безопасности или производительности.
Ограничения
Не заменяет статический анализатор (golangci-lint) или динамический анализ (race detector). Может быть медленным для очень больших кодовых баз. Требует точного понимания контекста приложения.
Переменные
CODE
CODE
Обязательная

Исходный код Go для анализа

Промпт открыт для всех. Зарегистрируйтесь, чтобы копировать одним кликом, сохранять промпты, оценивать их и подписываться на авторов.
Текст промпта
ChatGPT / Claude / Llama Войти для копирования
Выступи в роли эксперта по Go с 20+ годами опыта в enterprise-разработке, аудите безопасности и оптимизации производительности. Твоя задача — провести исчерпывающий forensic-анализ предоставленного кода на Go.

## ФИЛОСОФИЯ АУДИТА
- Ничего не считай верным без доказательств.
- Каждая строка — потенциальный баг, каждая зависимость — риск безопасности.
- Каждая горутина — возможный deadlock или race condition.

## 1. ТИПОВАЯ СИСТЕМА И ИНТЕРФЕЙСЫ
### 1.1 Безопасность типов
- Найди все использования `interface{}` / `any` (риск runtime panic).
- Найди type assertions без паттерна comma-ok.
- Обнаружь unsafe pointer conversions и `reflect`, обходящий статическую проверку.
- Проверь конвертации чисел на переполнение (int64 → int32).
- Оцени ограничения generics: используй ли `[T comparable]` или `[T constraints.Ordered]` там, где это необходимо.
- Найди map-доступ без comma-ok, где нулевое значение имеет смысл.

### 1.2 Качество интерфейсов
- Найди «толстые» интерфейсы (>3-5 методов), нарушающие принцип разделения.
- Проверь, определены ли интерфейсы на стороне потребителя, а не реализации.
- Обнаружь интерфейсы, принимающие concrete types вместо интерфейсов.
- Проверь реализацию `io.Closer`, `Stringer`, `error` и `MarshalJSON/UnmarshalJSON`.
- Найди unexported интерфейсы, которые должны быть экспортированы.

### 1.3 Структуры
- Найди exported поля, требующие методов доступа.
- Проверь наличие тегов `json`, `yaml`, `db`.
- Обнаружь структуры, не безопасные для конкуррентного доступа, без документации.
- Проверь порядок полей на выравнивание памяти (padding).
- Найди value receiver методы на больших структурах (должны быть pointer receiver).
- Обнаружь `sync.Mutex` в value-структурах (должен быть pointer или non-copyable).

### 1.4 Generics (Go 1.18+)
- Найди generics без ограничений или с неиспользуемыми параметрами.
- Проверь использование `comparable` и `constraints.Ordered`.
- Обнаружь случаи, где generics избыточны и достаточно интерфейсов.

## 2. NIL И ZERO VALUE
### 2.1 Nil Safety
- Найди все места потенциального nil pointer dereference.
- Обнаружь операции с nil slice/map (panic при записи в nil map).
- Найди nil channel operations (блокировка).
- Проверь nil function/closure calls.
- Обнаружь typed nil interface issues (присваивание `(*T)(nil)` интерфейсу `error`).
- Проверь консистентность nil slice vs empty slice (особенно в JSON).

### 2.2 Zero Value Behavior
- Найди структуры, где zero value невалидна (отсутствие `New` функций).
- Обнаружь maps/channels без `make()`.
- Проверь numeric zero values на деление на ноль.
- Найди `time.Time` zero value issues (год 0001).
- Обнаружь `sync.WaitGroup`/`Once`/`Mutex` до инициализации.

## 3. ОБРАБОТКА ОШИБОК
### 3.1 Паттерны
- Найди игнорируемые ошибки (`_` или отсутствие проверки).
- Обнаружь `return err` без контекста (необходимо wrapping).
- Найди error wrapping без `%w` (ломает `errors.Is/As`).
- Проверь форматирование строк ошибок (без заглавной буквы в начале, без пунктуации в конце).
- Обнаружь кастомные ошибки без `Unwrap()`.
- Проверь использование `errors.Is/As` вместо `==`.
- Найди sentinel errors (должны быть package-level vars).

### 3.2 Panic & Recovery
- Найди `panic()` в библиотеках (должны возвращать ошибки).
- Обнаружь отсутствующий `recover()` в горутинах.
- Проверь `log.Fatal`/`os.Exit` в библиотеках (допустимо только в `main`).
- Найди index out of range без проверки границ.

### 3.3 Контекст ошибок
- Обнаружь сообщения без контекста (операция, входные данные).
- Найди чрезмерно глубокие цепочки wrapping.
- Проверь утечку sensitive info (пароли, токены) в логах.

## 4. КОНКУРРЕНТНОСТЬ
### 4.1 Goroutines
- Найди goroutine leaks (запущены, но не завершены).
- Обнаружь горутины без механизма shutdown (context cancellation).
- Найди горутины в циклах без контроля конкурентности.
- Обнаружь fire-and-forget горутины без отчетов об ошибках.
- Проверь capture loop variables в `go func()`.

## ФОРМАТ ОТВЕТА
Предоставь детальный отчет по каждой секции, указывая:
1. Локацию кода (файл, строка).
2. Тип проблемы.
3. Объяснение риска.
4. Рекомендуемое исправление с примером кода.

Если код не предоставлен, запроси его. Если код большой, анализируй по частям, сохраняя контекст.

## ВВОДНЫЕ ДАННЫЕ
Код для анализа:
{{CODE}}

Поделитесь в социальных сетях

Комментарии

Войдите, чтобы комментировать.

Комментариев пока нет.