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 — redis/redis, Naming Conventions
- Use idiomatic conventions — python/cpython, Code Style
- Improve Readability Style — redis/redis, Code Style
- prefer concise expressions — neovim/neovim, Code Style
- Use meaningful identifiers — tree-sitter/tree-sitter, Naming Conventions
- Use descriptive names — neovim/neovim, Naming Conventions
- Simplify conditional logic — tree-sitter/tree-sitter, Code Style
- Clear unambiguous naming — python/cpython, Naming Conventions
- Extract and reuse — neondatabase/neon, Code Style
- Consistent semantic naming — bytedance/sonic, Naming Conventions
- Use utility macros — dotnet/runtime, Code Style
- Use semantic identifiers — torvalds/linux, Naming Conventions
Add when the change touches
- 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):
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 — python/cpython, Error Handling
- Nullable Contracts Enforcement — redis/redis, Null Handling
- Fail/Clamp Error Contracts — redis/redis, Error Handling
- API Contracts And Compatibility — redis/redis, API
- validate memory bounds — bytedance/sonic, Null Handling
- validate early, fail fast — neovim/neovim, Error Handling
- Explicit undefined state handling — facebook/yoga, Null Handling
- Validate and safely clear nullable pointers — python/cpython, Null Handling
- Initialize before dereferencing — neovim/neovim, Null Handling
- Handle all error paths — neondatabase/neon, Error Handling
- Validate before access — dotnet/runtime, Null Handling
- API extensibility parameters — 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
- 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):
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):
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):
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):
- No tool-based check applies; rely on the prompts.
Review prompts (6 in total, most discussed first):
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):
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):
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):
- 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):
Source repositories
torvalds/linux, neovim/neovim, python/cpython, redis/redis, tree-sitter/tree-sitter, bytedance/sonic