cpp-review

Review C++ code against Google C++ Style Guide. Use when reviewing C++ code, pull requests, or when asked to check code style compliance.

npx skills add https://github.com/clickhouse/pg_stat_ch --skill cpp-review

C++ Code Review (Google Style)

Review C++ code for compliance with the Google C++ Style Guide.

Review Checklist

Naming

  • Types use PascalCase
  • Functions use PascalCase (accessors use snake_case)
  • Variables use snake_case
  • Class members have trailing underscore: member_
  • Constants use kPascalCase
  • Macros use UPPER_CASE with project prefix

Headers

  • Has #define guard: PROJECT_PATH_FILE_H_
  • Self-contained (includes all dependencies)
  • Includes ordered: related header, C system, C++ stdlib, other libs, project
  • No forward declarations unless necessary

Classes

  • Single-argument constructors are explicit
  • Data members are private
  • Copy/move semantics explicit (= default, = delete)
  • No virtual calls in constructors
  • Uses composition over inheritance when appropriate

Functions

  • Returns values instead of output parameters when possible
  • Parameters ordered: inputs before outputs
  • Functions are ≤40 lines (prefer smaller)
  • Uses override/final for virtual overrides

Modern C++

  • Uses nullptr (not NULL or 0)
  • Uses C++ casts (not C-style)
  • Uses range-based for loops where appropriate
  • Uses auto appropriately (not excessively)
  • Smart pointers for ownership (unique_ptr, shared_ptr)

Formatting

  • 80 character line limit
  • 2-space indent
  • Braces on same line as control structures
  • Spaces around binary operators

Feedback Format

Use severity levels:

  • 🔴 MUST FIX: Style violations or bugs that must be fixed
  • 🟡 SHOULD FIX: Strong recommendations for improvement
  • 🟢 CONSIDER: Optional enhancements or suggestions

Example Review Comment

🔴 **MUST FIX**: Missing `explicit` on single-argument constructor
Line 45: `Foo(int value)` should be `explicit Foo(int value)` to prevent
implicit conversions.

🟡 **SHOULD FIX**: Function too long
Lines 78-145: `ProcessData()` is 67 lines. Consider breaking into smaller
functions for readability and testability.

🟢 **CONSIDER**: Use structured bindings
Line 23: `auto [iter, success] = map.insert({key, value});` would be clearer
than separate `.first` and `.second` access.

Plus de skills de clickhouse

clickhouse-best-practices
clickhouse
28 règles de bonnes pratiques ClickHouse organisées par conception de schéma, optimisation des requêtes et stratégie d'ingestion de données. Couvre trois domaines critiques : sélection de la clé primaire et des types de données (décisions de conception immuables), optimisation des JOIN et des requêtes, et regroupement des insertions avec évitement des mutations. Inclut 28 règles priorisées par impact, avec des règles de conception de schéma et d'optimisation des requêtes marquées CRITIQUES en raison du stockage columnar et des mécanismes d'index clairsemés de ClickHouse. Fournit des procédures de révision structurées pour...
official
clickhouse-js-node-coding
clickhouse
Write idiomatic application code with the ClickHouse Node.js client (`@clickhouse/client`). Use this skill whenever a user is *building* against the Node.js…
official
clickhousectl-cloud-deploy
clickhouse
Utiliser lorsque l'utilisateur souhaite déployer ClickHouse dans le cloud, passer en production, utiliser ClickHouse Cloud, héberger un service ClickHouse géré, ou migrer depuis un environnement local…
official
clickstack-otel-collector
clickhouse
À utiliser lorsqu'un utilisateur souhaite connecter un collecteur OpenTelemetry à un service Managed ClickStack sur ClickHouse Cloud, soit en déployant un nouveau collecteur local…
official
infra-clickhouse
clickhouse
Configure et gère ClickHouse à l'aide de la CLI clickhousectl — installe et exécute un serveur ClickHouse local pour le développement, et crée des services gérés ClickHouse Cloud…
official
infra-postgres
clickhouse
Sets up and manages Postgres using the clickhousectl CLI — runs a local Docker-backed Postgres for development, and creates and operates managed ClickHouse…
official
clickhouse-best-practices
clickhouse
À UTILISER OBLIGATOIREMENT lors de l'examen des schémas, requêtes ou configurations ClickHouse. Contient 31 règles qui DOIVENT être vérifiées avant de fournir des recommandations. Toujours lire…
official
setup
clickhouse
Guide les utilisateurs dans la configuration de la connexion au serveur ClickHouse MCP fourni avec ce plugin. À utiliser lors de la première installation du plugin ou en cas de problème…
official