reviewing-cpp

Reviews C++ desktop code for memory safety, framework anti-patterns, build system issues, and thread safety. Use when reviewing C++ GUI code quality or when the user asks for code review.

SKILL.md

GitHub

Review Context

  • Changed files: !git diff --name-only HEAD~1 2>/dev/null || echo "No recent commits"
  • Staged files: !git diff --staged --name-only

C++ Desktop Code Review

Scope: $ARGUMENTS

Delivers focused, streamlined C++ desktop code reviews matching stated task requirements exactly. No over-analysis.

Workflow

  1. Read task requirements to understand expected scope
  2. Detect framework (wxWidgets / GTK3 / Qt) from includes and CMakeLists.txt
  3. Match review depth to task complexity (single file vs multi-module)
  4. Validate requirements — does implementation match task scope exactly?
  5. Issue focused feedback with specific file paths and line numbers

Review Strategy

Simple Tasks (single file/widget): Memory safety, framework correctness, requirements match

Complex Tasks (multi-module): Above plus architecture, ownership graph, event flow, thread safety

Always: Check CMakeLists.txt, check for raw pointer leaks

Review Checklist

Memory Safety:

  • No raw new without matching delete (prefer smart pointers)
  • No dangling pointers to destroyed widgets
  • RAII used for all resource acquisition (files, sockets, handles)
  • No reinterpret_cast without safety justification
  • Container access bounds-checked where needed (at() vs [])

Framework Anti-Patterns:

  • wxWidgets: no manual delete of child windows (parent owns them)
  • GTK3: all g_object_unref / g_free calls present
  • Qt: no delete on QObject children (parent-child ownership)
  • No blocking calls in GUI event loop (use async/worker threads)
  • Event handlers do not throw exceptions across framework boundaries

Build System (CMakeLists.txt):

  • Target-based commands (no include_directories(), link_libraries())
  • find_package() with imported targets, not raw variables
  • Minimum CMake version specified
  • No hardcoded paths or platform assumptions without conditionals

Thread Safety:

  • GUI updates only from main thread
  • Worker threads use framework-specific dispatch (wxWidgets: CallAfter, Qt: QMetaObject::invokeMethod, GTK: g_idle_add)
  • Shared data protected by mutex or atomic operations
  • No data races between event handlers and background threads

Code Quality:

  • Follows project patterns in src/ and include/
  • Const-correctness on methods and parameters
  • Forward declarations used to minimize header coupling
  • GUI logic separated from business logic

Output Standards

Simple Tasks: CRITICAL issues only, clear approval when requirements met Complex Tasks: CRITICAL/WARNINGS/SUGGESTIONS with specific fixes All reviews: Concise, actionable, no unnecessary complexity analysis