# Static Analysis

> A mechanism that checks source code against a ruleset without running it.

Record: `architecture:static-analysis`
Kind: mechanism
Layer: [Computation Core](https://banes-lab.com/records/layer/computation-core.md)
Severity: mandatory
Scope: codebase, build
Canonical: https://banes-lab.com/ontology#architecture-static-analysis

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Property-Based Testing](https://banes-lab.com/records/architecture/property-based-testing.md) and before [Testability](https://banes-lab.com/records/architecture/testability.md).

## Repair

- Refactored by: Fix Violations, Tune Rules
- Detected by: static analysis rule failures
- Violated by: ignored analyzer findings
- Measured by: issue count, false-positive rate
- Enforced by: CI quality gates

## Requires

- [Ruleset](https://banes-lab.com/records/lexicon/ruleset.md)

## Reinforces

- [Type Safety](https://banes-lab.com/records/architecture/type-safety.md)
- [Security](https://banes-lab.com/records/lexicon/security.md)
- [Architecture Compliance](https://banes-lab.com/records/lexicon/architecture-compliance.md)

## Enables

- [Automated Enforcement](https://banes-lab.com/records/lexicon/automated-enforcement.md)

## Conflicts with

- [Unchecked Dynamic Code](https://banes-lab.com/records/lexicon/unchecked-dynamic-code.md)

## In tension with

- [False Positives](https://banes-lab.com/records/lexicon/false-positives.md)
- [Runtime Discovery](https://banes-lab.com/records/architecture/runtime-discovery.md)
- [Metaprogramming](https://banes-lab.com/records/architecture/metaprogramming.md)
- [Reflection](https://banes-lab.com/records/architecture/reflection.md)
- [Plugin Architecture](https://banes-lab.com/records/architecture/plugin-architecture.md)
- [Runtime Discovery / Static Analysis](https://banes-lab.com/records/tension/runtime-discovery-static-analysis.md)
- [Metaprogramming / Static Analysis](https://banes-lab.com/records/tension/metaprogramming-static-analysis.md)
- [Reflection / Static Analysis](https://banes-lab.com/records/tension/reflection-static-analysis.md)
- [Plugin Architecture / Static Analysis](https://banes-lab.com/records/tension/plugin-architecture-static-analysis.md)

## Tensions

- [Static Analysis / False Positives](https://banes-lab.com/records/tension/false-positives-static-analysis.md)

## Severity

- [mandatory](https://banes-lab.com/records/vocabulary/severity-mandatory.md)

## Techniques

- [Static Analysis](https://banes-lab.com/records/reasoning/technique-static-analysis.md)

## Category

- [Correctness / Determinism / Verification](https://banes-lab.com/records/architecture-category/correctness-determinism-verification.md)

## Linked from

- [What PAG is](https://banes-lab.com/pag/introduction/what-is-pag.md)
- [Well-formedness](https://banes-lab.com/pag/guide/well-formedness.md)
- [Who does what](https://banes-lab.com/disciplined-methodology/start/who-does-what.md)
- [Three encodings](https://banes-lab.com/disciplined-methodology/start/three-encodings.md)
- [A check matches a shape](https://banes-lab.com/disciplined-methodology/build/a-check-matches-a-shape.md)
- [From intent to predicate](https://banes-lab.com/software-architecture/coverage/an-architecture-is-its-predicate-set.md)
- [Scale follows determinism](https://banes-lab.com/software-architecture/scale/scale-follows-determinism.md)
- [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/principles/architecture-category-runtime-discovery-dynamic-binding.md)
- [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/principles/architecture-category-metaprogramming-language-oriented-architecture.md)
- [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/principles/architecture-category-plugin-extensibility-ioc.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/principles/architecture-category-schema-canonical-data-semantics.md)
- [Core Vocabulary](https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.md)
- [Correctness / Determinism / Verification](https://banes-lab.com/ontology/lexicon/lexicon-category-correctness-determinism-verification.md)
- [Quality Attributes](https://banes-lab.com/ontology/lexicon/lexicon-category-quality-attributes.md)
- [The techniques](https://banes-lab.com/ontology/reasoning/the-techniques.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)

## Evidence in the code

- [checkNaming](https://banes-lab.com/source/coordination/tools/core/validators/taxonomy.validator.ts.md)
- [checkPlacement](https://banes-lab.com/source/coordination/tools/core/validators/taxonomy.validator.ts.md)
