# Verifying C changes

Files: `.c`, `.h`. Derived from 6 scanned source repositories and 67 review prompts on https://awesomereviewers.com. Page: https://awesomereviewers.com/verify/c/

How to use this: run every check under *Run on every change*. Then, for each section under *Add when the change touches* that describes your diff, run its checks too. Checks catch what a tool can find; then apply the listed review prompts for what tools miss (fetch each prompt's raw URL).

Usage is the share of scanned repositories in this language that run the tool. A missing tool means no scanned repository runs one the scanner recognises: fall back to the prompts.

## Run on every change

- **Formatting** — no tool detected in the sample. Catches: Layout drift that buries the real change in the diff.
- **Linting** — no tool detected in the sample. Catches: Bug-prone patterns, unused code and conventions the formatter does not cover.
- **Type checking** — The compiler type-checks on every build and test run; a failing build is this check failing.
- **Unit and integration tests** — no tool detected in the sample. Catches: Behaviour regressions on the paths the tests exercise.

Review prompts (16 in total, most discussed first):

- [Clear Semantic Identifier Naming](https://awesomereviewers.com/raw/redis-clear-semantic-identifier-naming.md) — redis/redis, Naming Conventions
- [Use idiomatic conventions](https://awesomereviewers.com/raw/cpython-use-idiomatic-conventions.md) — python/cpython, Code Style
- [Improve Readability Style](https://awesomereviewers.com/raw/redis-improve-readability-style.md) — redis/redis, Code Style
- [prefer concise expressions](https://awesomereviewers.com/raw/neovim-prefer-concise-expressions.md) — neovim/neovim, Code Style
- [Use meaningful identifiers](https://awesomereviewers.com/raw/tree-sitter-use-meaningful-identifiers.md) — tree-sitter/tree-sitter, Naming Conventions
- [Use descriptive names](https://awesomereviewers.com/raw/neovim-use-descriptive-names.md) — neovim/neovim, Naming Conventions
- [Simplify conditional logic](https://awesomereviewers.com/raw/tree-sitter-simplify-conditional-logic.md) — tree-sitter/tree-sitter, Code Style
- [Clear unambiguous naming](https://awesomereviewers.com/raw/cpython-clear-unambiguous-naming.md) — python/cpython, Naming Conventions
- [Extract and reuse](https://awesomereviewers.com/raw/neon-extract-and-reuse.md) — neondatabase/neon, Code Style
- [Consistent semantic naming](https://awesomereviewers.com/raw/sonic-consistent-semantic-naming.md) — bytedance/sonic, Naming Conventions
- [Use utility macros](https://awesomereviewers.com/raw/runtime-use-utility-macros.md) — dotnet/runtime, Code Style
- [Use semantic identifiers](https://awesomereviewers.com/raw/linux-use-semantic-identifiers.md) — torvalds/linux, Naming Conventions

## Add when the change touches

### Authentication, input handling, secrets, permissions

- **Security scanning**: `codeql` (33% of repos). Runs via GitHub Action github/codeql-action/analyze. Docs: https://github.com/github/codeql
- **Secret scanning** — no tool detected in the sample. Catches: Credentials and tokens committed to the repository.
- **Dependency audit** — no tool detected in the sample. Catches: Known-vulnerable or disallowed dependencies and licenses.

Review prompts (3 in total, most discussed first):

- [Fail Fast Input Validation](https://awesomereviewers.com/raw/redis-fail-fast-input-validation.md) — redis/redis, Security
- [Secure sensitive data handling](https://awesomereviewers.com/raw/cpython-secure-sensitive-data-handling.md) — python/cpython, Security
- [audit license dependencies](https://awesomereviewers.com/raw/istio-audit-license-dependencies.md) — istio/istio, Security

### Public APIs, signatures, error paths, nullability

- **Type checking** — The compiler type-checks on every build and test run; a failing build is this check failing.
- **Unit and integration tests** — no tool detected in the sample. Catches: Behaviour regressions on the paths the tests exercise.
- **Property-based tests** — no tool detected in the sample. Catches: Edge-case inputs nobody wrote a test for; invariants over generated data.

Review prompts (14 in total, most discussed first):

- [Robust C API error handling](https://awesomereviewers.com/raw/cpython-robust-c-api-error-handling.md) — python/cpython, Error Handling
- [Nullable Contracts Enforcement](https://awesomereviewers.com/raw/redis-nullable-contracts-enforcement.md) — redis/redis, Null Handling
- [Fail/Clamp Error Contracts](https://awesomereviewers.com/raw/redis-failclamp-error-contracts.md) — redis/redis, Error Handling
- [API Contracts And Compatibility](https://awesomereviewers.com/raw/redis-api-contracts-and-compatibility.md) — redis/redis, API
- [validate memory bounds](https://awesomereviewers.com/raw/sonic-validate-memory-bounds.md) — bytedance/sonic, Null Handling
- [validate early, fail fast](https://awesomereviewers.com/raw/neovim-validate-early-fail-fast.md) — neovim/neovim, Error Handling
- [Explicit undefined state handling](https://awesomereviewers.com/raw/yoga-explicit-undefined-state-handling.md) — facebook/yoga, Null Handling
- [Validate and safely clear nullable pointers](https://awesomereviewers.com/raw/cpython-validate-and-safely-clear-nullable-pointers.md) — python/cpython, Null Handling
- [Initialize before dereferencing](https://awesomereviewers.com/raw/neovim-initialize-before-dereferencing.md) — neovim/neovim, Null Handling
- [Handle all error paths](https://awesomereviewers.com/raw/neon-handle-all-error-paths.md) — neondatabase/neon, Error Handling
- [Validate before access](https://awesomereviewers.com/raw/runtime-validate-before-access.md) — dotnet/runtime, Null Handling
- [API extensibility parameters](https://awesomereviewers.com/raw/neovim-api-extensibility-parameters.md) — neovim/neovim, API

### Service and framework code

- **Unit and integration tests** — no tool detected in the sample. Catches: Behaviour regressions on the paths the tests exercise.
- **Version and platform matrix**: `ci-matrix` (67% of repos). Command seen: `build (go-version: 4)`. Docs: https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations

### Algorithms, parsers, data transforms

- **Property-based tests** — no tool detected in the sample. Catches: Edge-case inputs nobody wrote a test for; invariants over generated data.
- **Fuzzing** — no tool detected in the sample. Catches: Crashes, panics and hangs on malformed input, especially in parsers and decoders.
- **Mutation testing** — no tool detected in the sample. Catches: Tests that keep passing whatever the code does.
- **Proofs and specifications** — no tool detected in the sample. Catches: Design-level bugs in protocols and algorithms, checked against a specification.

Review prompts (9 in total, most discussed first):

- [Correct Fast-Path Semantics](https://awesomereviewers.com/raw/redis-correct-fast-path-semantics.md) — redis/redis, Algorithms
- [Validate recursive algorithms against nesting](https://awesomereviewers.com/raw/cpython-validate-recursive-algorithms-against-nesting.md) — python/cpython, Algorithms
- [validate algorithm boundaries](https://awesomereviewers.com/raw/tree-sitter-validate-algorithm-boundaries.md) — tree-sitter/tree-sitter, Algorithms
- [Decompose complex algorithms](https://awesomereviewers.com/raw/runtime-decompose-complex-algorithms.md) — dotnet/runtime, Algorithms
- [Optimize data structures](https://awesomereviewers.com/raw/neon-optimize-data-structures.md) — neondatabase/neon, Algorithms
- [optimize algorithmic complexity](https://awesomereviewers.com/raw/llama.cpp-optimize-algorithmic-complexity.md) — ggml-org/llama.cpp, Algorithms
- [Algorithm specification compliance](https://awesomereviewers.com/raw/yoga-algorithm-specification-compliance.md) — facebook/yoga, Algorithms
- [optimize data structure operations](https://awesomereviewers.com/raw/neovim-optimize-data-structure-operations.md) — neovim/neovim, Algorithms
- [bounds checking first](https://awesomereviewers.com/raw/sonic-bounds-checking-first.md) — bytedance/sonic, Algorithms

### Threads, async code, locks, shared state

- **Concurrency model checking** — no tool detected in the sample. Catches: Races and orderings that fail only under specific interleavings.
- **Undefined-behaviour detection** — no tool detected in the sample. Catches: Memory-safety and aliasing violations in unsafe code.
- **Property-based tests** — no tool detected in the sample. Catches: Edge-case inputs nobody wrote a test for; invariants over generated data.

Review prompts (4 in total, most discussed first):

- [Lock the right resource](https://awesomereviewers.com/raw/cpython-lock-the-right-resource.md) — python/cpython, Concurrency
- [Thread Ownership Discipline](https://awesomereviewers.com/raw/redis-thread-ownership-discipline.md) — redis/redis, Concurrency
- [prevent autocommand reentrancy](https://awesomereviewers.com/raw/neovim-prevent-autocommand-reentrancy.md) — neovim/neovim, Concurrency
- [Guard against race conditions](https://awesomereviewers.com/raw/neon-guard-against-race-conditions.md) — neondatabase/neon, Concurrency

### Network calls, retries, timeouts, protocols

- **Unit and integration tests** — no tool detected in the sample. Catches: Behaviour regressions on the paths the tests exercise.
- **Fuzzing** — no tool detected in the sample. Catches: Crashes, panics and hangs on malformed input, especially in parsers and decoders.

Review prompts (4 in total, most discussed first):

- [leverage kernel network structures](https://awesomereviewers.com/raw/istio-leverage-kernel-network-structures.md) — istio/istio, Networking
- [follow protocol standards](https://awesomereviewers.com/raw/neovim-follow-protocol-standards.md) — neovim/neovim, Networking
- [Handle network interrupts safely](https://awesomereviewers.com/raw/neon-handle-network-interrupts-safely.md) — neondatabase/neon, Networking
- [Check feature compatibility](https://awesomereviewers.com/raw/netty-check-feature-compatibility.md) — netty/netty, Networking

### UI components and pages

- **End-to-end browser tests** — no tool detected in the sample. Catches: User flows broken across components, routing and the network.
- **Linting** — no tool detected in the sample. Catches: Bug-prone patterns, unused code and conventions the formatter does not cover.

### Databases, migrations, caching

- **Unit and integration tests** — no tool detected in the sample. Catches: Behaviour regressions on the paths the tests exercise.
- **Version and platform matrix**: `ci-matrix` (67% of repos). Command seen: `build (go-version: 4)`. Docs: https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations

Review prompts (1 in total, most discussed first):

- [Consistent TTL Pre-check](https://awesomereviewers.com/raw/redis-consistent-ttl-pre-check.md) — redis/redis, Caching

### Hot paths and performance

- No tool-based check applies; rely on the prompts.

Review prompts (6 in total, most discussed first):

- [Bounded Prefetch Batches](https://awesomereviewers.com/raw/redis-bounded-prefetch-batches.md) — redis/redis, Performance Optimization
- [Benchmark hot-path regressions](https://awesomereviewers.com/raw/cpython-benchmark-hot-path-regressions.md) — python/cpython, Performance Optimization
- [Optimize aligned SIMD operations](https://awesomereviewers.com/raw/runtime-optimize-aligned-simd-operations.md) — dotnet/runtime, Performance Optimization
- [Optimize what matters](https://awesomereviewers.com/raw/neon-optimize-what-matters.md) — neondatabase/neon, Performance Optimization
- [optimize memory usage patterns](https://awesomereviewers.com/raw/tree-sitter-optimize-memory-usage-patterns.md) — tree-sitter/tree-sitter, Performance Optimization
- [optimize hot path performance](https://awesomereviewers.com/raw/istio-optimize-hot-path-performance.md) — istio/istio, Performance Optimization

### Model, prompt and LLM code

- **Unit and integration tests** — no tool detected in the sample. Catches: Behaviour regressions on the paths the tests exercise.

### Logging, metrics, tracing

- No tool-based check applies; rely on the prompts.

Review prompts (1 in total, most discussed first):

- [consolidate related logging](https://awesomereviewers.com/raw/tree-sitter-consolidate-related-logging.md) — tree-sitter/tree-sitter, Logging

### CI workflows and configuration files

- **CI workflow linting** — no tool detected in the sample. Catches: Broken GitHub Actions syntax, script injection, over-broad token permissions.
- **File hygiene**: `pre-commit-hooks` (17% of repos). Runs via pre-commit hook check-yaml. Autofixes. Docs: https://github.com/pre-commit/pre-commit-hooks

Review prompts (4 in total, most discussed first):

- [Conditional compilation guards](https://awesomereviewers.com/raw/tree-sitter-conditional-compilation-guards.md) — tree-sitter/tree-sitter, Configurations
- [Configuration context alignment](https://awesomereviewers.com/raw/neon-configuration-context-alignment.md) — neondatabase/neon, Configurations
- [Explicit configuration requirements](https://awesomereviewers.com/raw/llvm-project-explicit-configuration-requirements.md) — llvm/llvm-project, Configurations
- [Centralize platform configurations](https://awesomereviewers.com/raw/runtime-centralize-platform-configurations.md) — dotnet/runtime, Configurations

### Dependencies and lockfiles

- **Dependency audit** — no tool detected in the sample. Catches: Known-vulnerable or disallowed dependencies and licenses.
- **Lockfile consistency** — no tool detected in the sample. Catches: A lockfile that no longer matches its manifest.
- **Version and platform matrix**: `ci-matrix` (67% of repos). Command seen: `build (go-version: 4)`. Docs: https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations

### The tests themselves

- **Mutation testing** — no tool detected in the sample. Catches: Tests that keep passing whatever the code does.
- **Version and platform matrix**: `ci-matrix` (67% of repos). Command seen: `build (go-version: 4)`. Docs: https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations

Review prompts (1 in total, most discussed first):

- [preserve known test issues](https://awesomereviewers.com/raw/llvm-project-preserve-known-test-issues.md) — llvm/llvm-project, Testing

### Documentation and comments

- **Docs build** — no tool detected in the sample. Catches: Broken cross-references, links and markup in documentation.
- **Spelling**: `codespell` (17% of repos). Runs via GitHub Action codespell-project/actions-codespell. Docs: https://github.com/codespell-project/codespell

Review prompts (4 in total, most discussed first):

- [Doc Semantics Consistency](https://awesomereviewers.com/raw/redis-doc-semantics-consistency.md) — redis/redis, Documentation
- [Documentation accuracy standards](https://awesomereviewers.com/raw/neovim-documentation-accuracy-standards.md) — neovim/neovim, Documentation
- [Document non-obvious logic](https://awesomereviewers.com/raw/runtime-document-non-obvious-logic.md) — dotnet/runtime, Documentation
- [Meaningful comment practices](https://awesomereviewers.com/raw/sonic-meaningful-comment-practices.md) — bytedance/sonic, Documentation

## Source repositories

[torvalds/linux](https://awesomereviewers.com/sources/torvalds-linux/), [neovim/neovim](https://awesomereviewers.com/sources/neovim-neovim/), [python/cpython](https://awesomereviewers.com/sources/python-cpython/), [redis/redis](https://awesomereviewers.com/sources/redis-redis/), [tree-sitter/tree-sitter](https://awesomereviewers.com/sources/tree-sitter-tree-sitter/), [bytedance/sonic](https://awesomereviewers.com/sources/bytedance-sonic/)
