# Verifying Kotlin changes

Files: `.kt`, `.kts`. Derived from 2 scanned source repositories and 28 review prompts on https://awesomereviewers.com. Page: https://awesomereviewers.com/verify/kotlin/

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

- [Names express clear intent](https://awesomereviewers.com/raw/kotlin-names-express-clear-intent.md) — JetBrains/kotlin, Naming Conventions
- [prefer Kotlin idioms](https://awesomereviewers.com/raw/react-native-prefer-kotlin-idioms.md) — facebook/react-native, Code Style
- [Keep code clearly organized](https://awesomereviewers.com/raw/kotlin-keep-code-clearly-organized.md) — JetBrains/kotlin, Code Style
- [avoid Hungarian notation](https://awesomereviewers.com/raw/react-native-avoid-hungarian-notation.md) — facebook/react-native, Naming Conventions
- [Avoid duplicated code](https://awesomereviewers.com/raw/continue-avoid-duplicated-code.md) — continuedev/continue, Code Style

## Add when the change touches

### Authentication, input handling, secrets, permissions

- **Security scanning** — no tool detected in the sample. Catches: Injection, unsafe APIs and tainted data reaching a sink.
- **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 (1 in total, most discussed first):

- [Document security implementations](https://awesomereviewers.com/raw/kotlin-document-security-implementations.md) — JetBrains/kotlin, 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 (7 in total, most discussed first):

- [avoid !! operator](https://awesomereviewers.com/raw/react-native-avoid-operator.md) — facebook/react-native, Null Handling
- [Design extensible stable APIs](https://awesomereviewers.com/raw/kotlin-design-extensible-stable-apis.md) — JetBrains/kotlin, API
- [Prefer descriptive errors](https://awesomereviewers.com/raw/kotlin-prefer-descriptive-errors.md) — JetBrains/kotlin, Error Handling
- [Use defensive null checks](https://awesomereviewers.com/raw/kotlin-use-defensive-null-checks.md) — JetBrains/kotlin, Null Handling
- [catch specific exceptions](https://awesomereviewers.com/raw/react-native-catch-specific-exceptions.md) — facebook/react-native, Error Handling
- [Leverage Kotlin null-safety](https://awesomereviewers.com/raw/spring-framework-leverage-kotlin-null-safety.md) — spring-projects/spring-framework, Null Handling
- [Preserve API compatibility](https://awesomereviewers.com/raw/deeplearning4j-preserve-api-compatibility.md) — deeplearning4j/deeplearning4j, 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** — no tool detected in the sample. Catches: Breakage on a runtime version, OS or feature combination you did not run locally.

### 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):

- [Consider operation time complexity](https://awesomereviewers.com/raw/kotlin-consider-operation-time-complexity.md) — JetBrains/kotlin, 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 (2 in total, most discussed first):

- [proper synchronization practices](https://awesomereviewers.com/raw/react-native-proper-synchronization-practices.md) — facebook/react-native, Concurrency
- [Structured coroutine management](https://awesomereviewers.com/raw/maplibre-native-structured-coroutine-management.md) — maplibre/maplibre-native, 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.

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

- [avoid unnecessary component complexity](https://awesomereviewers.com/raw/react-native-avoid-unnecessary-component-complexity.md) — facebook/react-native, React

### 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** — no tool detected in the sample. Catches: Breakage on a runtime version, OS or feature combination you did not run locally.

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

- [leverage framework cache mechanisms](https://awesomereviewers.com/raw/react-native-leverage-framework-cache-mechanisms.md) — facebook/react-native, Caching

### Hot paths and performance

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

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

- [Minimize unnecessary work](https://awesomereviewers.com/raw/kotlin-minimize-unnecessary-work.md) — JetBrains/kotlin, Performance Optimization
- [avoid unnecessary conversions](https://awesomereviewers.com/raw/react-native-avoid-unnecessary-conversions.md) — facebook/react-native, 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 (3 in total, most discussed first):

- [Use configuration property providers](https://awesomereviewers.com/raw/kotlin-use-configuration-property-providers.md) — JetBrains/kotlin, Configurations
- [Feature flag isolation](https://awesomereviewers.com/raw/react-native-feature-flag-isolation.md) — facebook/react-native, Configurations
- [Externalize configuration values](https://awesomereviewers.com/raw/maplibre-native-externalize-configuration-values.md) — maplibre/maplibre-native, 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** — no tool detected in the sample. Catches: Breakage on a runtime version, OS or feature combination you did not run locally.

### The tests themselves

- **Mutation testing** — no tool detected in the sample. Catches: Tests that keep passing whatever the code does.
- **Version and platform matrix** — no tool detected in the sample. Catches: Breakage on a runtime version, OS or feature combination you did not run locally.

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

- [Test edge cases](https://awesomereviewers.com/raw/kotlin-test-edge-cases.md) — JetBrains/kotlin, Testing
- [Use Kotlin testing idioms](https://awesomereviewers.com/raw/react-native-use-kotlin-testing-idioms.md) — facebook/react-native, 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 (3 in total, most discussed first):

- [Effective API samples](https://awesomereviewers.com/raw/kotlin-effective-api-samples.md) — JetBrains/kotlin, Documentation
- [Use proper documentation format](https://awesomereviewers.com/raw/react-native-use-proper-documentation-format.md) — facebook/react-native, Documentation
- [Accurate documentation references](https://awesomereviewers.com/raw/maplibre-native-accurate-documentation-references.md) — maplibre/maplibre-native, Documentation

## Source repositories

[facebook/react-native](https://awesomereviewers.com/sources/facebook-react-native/), [JetBrains/kotlin](https://awesomereviewers.com/sources/jetbrains-kotlin/)
