Static Analysis

Static source code analysis examines software without executing it, identifying security-relevant weaknesses in the codebase before they can be exploited at runtime. Static analysis must be performed across all available source code. The mission’s weakness prioritization (i.e., CM0016) process should guide tool configuration and finding triage without unnecessarily excluding other weakness classes supported by the tools. The static analysis program must employ no fewer than two distinct tools with complementary language and weakness-detection capabilities. The tools should be applied at defined points throughout the development and maintenance lifecycle to provide overlapping and complementary analysis coverage and reduce the likelihood that exploitable weaknesses persist into integration or deployment. Tool selection should account for language compatibility, weakness class coverage, and the ability to produce findings in formats that support triage and remediation tracking. Static analysis should be integrated into the software build pipeline as an automated, recurring activity rather than conducted as a periodic manual exercise, ensuring that new code contributions are analyzed continuously throughout development.

ID: CM0019
Tier: I
Ground CM 
Created: 2022/10/19
Last Modified: 2026/08/06

Pre-Operations Government

Acquisition requirements should mandate static analysis as a continuous, automated development activity applied to all available source code, with an explicit requirement for a minimum of two static analysis tools to be employed in combination. Requirements should specify that tool selection be documented and justified based on language coverage and weakness-detection capability. Tool configurations should address the mission’s approved weakness priorities while retaining broader supported analysis coverage unless specific exclusions are documented and approved. Contract language should require that static analysis results be submitted to government technical authorities as controlled deliverables at defined program milestones, and that all findings above a specified severity threshold be tracked to disposition prior to advancement through development gates. Flow-down provisions should require subcontractors contributing source code to the mission to apply the same static analysis requirements to their deliverable code, with results included in subcontractor technical data packages. Evaluation criteria should assess offerors' proposed toolchains, their processes for configuring tools against mission-specific weakness priorities, and their demonstrated capability to integrate static analysis into automated build pipelines for safety- and security-critical software.

Pre-Operations Developer/Supplier

Static analysis tooling should be selected, configured, and integrated into the build pipeline before substantive software development begins, so that analysis is applied to code from the first commit rather than introduced as a late-stage quality gate that generates an unmanageable backlog of findings. The two required tools should be selected to complement each other's detection coverage, with the combination chosen to maximize coverage across the weakness classes prioritized for the mission; the selection rationale should be documented as a security engineering decision record. Tool configurations, including active rule sets, severity thresholds, and suppression lists, should be version-controlled alongside the source code they apply to, ensuring that analysis results are reproducible and that configuration changes are traceable. Finding suppressions and analysis exclusions should be narrowly scoped, documented with a technical rationale, and reviewed following relevant changes to the code, tool, or analysis rules. Suppressions should not be applied broadly in a manner that conceals future valid findings. Analysis results should feed directly into the defect tracking and remediation workflow, with high-severity findings assigned for remediation before the affected code is promoted to integration or release branches.