# Verifying C# changes

Files: `.cs`. Derived from 4 scanned source repositories and 42 review prompts on https://awesomereviewers.com. Page: https://awesomereviewers.com/verify/csharp/

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 (9 in total, most discussed first):

- [Consistent naming patterns](https://awesomereviewers.com/raw/octokit.net-consistent-naming-patterns.md) — octokit/octokit.net, Naming Conventions
- [Optimize for readability](https://awesomereviewers.com/raw/runtime-optimize-for-readability.md) — dotnet/runtime, Code Style
- [Follow naming patterns](https://awesomereviewers.com/raw/runtime-follow-naming-patterns.md) — dotnet/runtime, Naming Conventions
- [Maintain consistent style](https://awesomereviewers.com/raw/octokit.net-maintain-consistent-style.md) — octokit/octokit.net, Code Style
- [Use domain-specific type names](https://awesomereviewers.com/raw/azure-sdk-for-net-use-domain-specific-type-names.md) — Azure/azure-sdk-for-net, Naming Conventions
- [Maintain clean code structure](https://awesomereviewers.com/raw/azure-sdk-for-net-maintain-clean-code-structure.md) — Azure/azure-sdk-for-net, Code Style
- [Self-Documenting Calls & Models](https://awesomereviewers.com/raw/azure-powershell-self-documenting-calls-models.md) — Azure/azure-powershell, Code Style
- [Consistent Identifier Naming](https://awesomereviewers.com/raw/azure-powershell-consistent-identifier-naming.md) — Azure/azure-powershell, Naming Conventions
- [Follow language naming conventions](https://awesomereviewers.com/raw/yoga-follow-language-naming-conventions.md) — facebook/yoga, Naming Conventions

## Add when the change touches

### Authentication, input handling, secrets, permissions

- **Security scanning**: `codeql` (50% 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 (4 in total, most discussed first):

- [Validate Security Inputs](https://awesomereviewers.com/raw/azure-powershell-validate-security-inputs.md) — Azure/azure-powershell, Security
- [Secure permission modeling](https://awesomereviewers.com/raw/octokit.net-secure-permission-modeling.md) — octokit/octokit.net, Security
- [Constant-time cryptographic validation](https://awesomereviewers.com/raw/runtime-constant-time-cryptographic-validation.md) — dotnet/runtime, Security
- [Complete authentication testing](https://awesomereviewers.com/raw/azure-sdk-for-net-complete-authentication-testing.md) — Azure/azure-sdk-for-net, 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 (13 in total, most discussed first):

- [Specific exceptions with context](https://awesomereviewers.com/raw/runtime-specific-exceptions-with-context.md) — dotnet/runtime, Error Handling
- [Check before dereferencing](https://awesomereviewers.com/raw/azure-sdk-for-net-check-before-dereferencing.md) — Azure/azure-sdk-for-net, Null Handling
- [Use nullable for optionals](https://awesomereviewers.com/raw/octokit.net-use-nullable-for-optionals.md) — octokit/octokit.net, Null Handling
- [Null-Safe Inputs And Mapping](https://awesomereviewers.com/raw/azure-powershell-null-safe-inputs-and-mapping.md) — Azure/azure-powershell, Null Handling
- [API versioning and client methods](https://awesomereviewers.com/raw/azure-powershell-api-versioning-and-client-methods.md) — Azure/azure-powershell, API
- [Consistent error handling](https://awesomereviewers.com/raw/azure-powershell-consistent-error-handling.md) — Azure/azure-powershell, Error Handling
- [Prevent null references](https://awesomereviewers.com/raw/runtime-prevent-null-references.md) — dotnet/runtime, Null Handling
- [Specific exceptions for clarity](https://awesomereviewers.com/raw/azure-sdk-for-net-specific-exceptions-for-clarity.md) — Azure/azure-sdk-for-net, Error Handling
- [Design intuitive API methods](https://awesomereviewers.com/raw/octokit.net-design-intuitive-api-methods.md) — octokit/octokit.net, API
- [Preserve API compatibility](https://awesomereviewers.com/raw/azure-sdk-for-net-preserve-api-compatibility.md) — Azure/azure-sdk-for-net, API
- [Catch specific exceptions](https://awesomereviewers.com/raw/octokit.net-catch-specific-exceptions.md) — octokit/octokit.net, Error Handling
- [Honor API contracts](https://awesomereviewers.com/raw/runtime-honor-api-contracts.md) — dotnet/runtime, 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` (25% of repos). Command seen: `analyze (language: 1)`. 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 (1 in total, most discussed first):

- [Optimize memory access](https://awesomereviewers.com/raw/runtime-optimize-memory-access.md) — dotnet/runtime, 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 (1 in total, most discussed first):

- [Avoid busy waiting](https://awesomereviewers.com/raw/runtime-avoid-busy-waiting.md) — dotnet/runtime, 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.

### 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` (25% of repos). Command seen: `analyze (language: 1)`. Docs: https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations

### Hot paths and performance

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

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

- [Minimize memory allocations](https://awesomereviewers.com/raw/azure-sdk-for-net-minimize-memory-allocations.md) — Azure/azure-sdk-for-net, Performance Optimization
- [Cache expensive computations](https://awesomereviewers.com/raw/runtime-cache-expensive-computations.md) — dotnet/runtime, 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.

### 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** — no tool detected in the sample. Catches: Invalid JSON, YAML or TOML, merge markers, trailing whitespace, oversized files.

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

- [Standardize environment variables](https://awesomereviewers.com/raw/azure-sdk-for-net-standardize-environment-variables.md) — Azure/azure-sdk-for-net, Configurations
- [Avoid manual SDK edits](https://awesomereviewers.com/raw/azure-powershell-avoid-manual-sdk-edits.md) — Azure/azure-powershell, CI/CD
- [Abstract configuration access](https://awesomereviewers.com/raw/octokit.net-abstract-configuration-access.md) — octokit/octokit.net, Configurations
- [Feature flag implementation](https://awesomereviewers.com/raw/runtime-feature-flag-implementation.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` (25% of repos). Command seen: `analyze (language: 1)`. 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` (25% of repos). Command seen: `analyze (language: 1)`. Docs: https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations

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

- [Use specific assertions](https://awesomereviewers.com/raw/octokit.net-use-specific-assertions.md) — octokit/octokit.net, Testing
- [Maintainable test structure](https://awesomereviewers.com/raw/runtime-maintainable-test-structure.md) — dotnet/runtime, Testing
- [Write deterministic tests](https://awesomereviewers.com/raw/azure-sdk-for-net-write-deterministic-tests.md) — Azure/azure-sdk-for-net, Testing
- [Unit tests for cmdlet paths](https://awesomereviewers.com/raw/azure-powershell-unit-tests-for-cmdlet-paths.md) — Azure/azure-powershell, Testing

### Documentation and comments

- **Docs build** — no tool detected in the sample. Catches: Broken cross-references, links and markup in documentation.
- **Spelling** — no tool detected in the sample. Catches: Typos in identifiers, comments and docs.

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

- [Document public API elements](https://awesomereviewers.com/raw/octokit.net-document-public-api-elements.md) — octokit/octokit.net, Documentation
- [Document code reasoning](https://awesomereviewers.com/raw/azure-sdk-for-net-document-code-reasoning.md) — Azure/azure-sdk-for-net, Documentation
- [Document code meaningfully](https://awesomereviewers.com/raw/runtime-document-code-meaningfully.md) — dotnet/runtime, Documentation
- [Documentation Source And Tone](https://awesomereviewers.com/raw/azure-powershell-documentation-source-and-tone.md) — Azure/azure-powershell, Documentation

## Source repositories

[dotnet/runtime](https://awesomereviewers.com/sources/dotnet-runtime/), [Azure/azure-sdk-for-net](https://awesomereviewers.com/sources/azure-azure-sdk-for-net/), [Azure/azure-powershell](https://awesomereviewers.com/sources/azure-azure-powershell/), [octokit/octokit.net](https://awesomereviewers.com/sources/octokit-octokit.net/)
