Read-only mining codemod for SonarSource rule java:S6418 — Secrets should not be hard-coded.
It scans Java source and emits metrics only; it never modifies code (return null).
Findings are high-signal review candidates surfaced by AST pattern matching — they are not proven vulnerabilities. A static mining pass cannot prove an end-to-end taint flow
from an untrusted source to the sink, so confirm data flow before remediating.
Field
Value
Rule key
java:S6418
Type
Vulnerability
Severity
Blocker
Primary CWE
CWE-798 (Use of Hard-coded Credentials)
Tags
cert, cwe, former-hotspot
What it detects
Secret-like variables and fields assigned a hard-coded string literal.
Sinks:
variable/field declarations and assignments whose name matches password/secret/token/apiKey/accessKey/privateKey/credential/…
Emission rule: Emits when a secret-named target is assigned a string literal of length ≥ 4. Values from env/config method calls are skipped.
Metric: java-hardcoded-secrets-mining
dimension
meaning
rule
SonarSource rule key
cwe
primary CWE identifier
severity
always blocker
sink
the detected sink (method/constructor)
package_name
enclosing Java package
class_name
enclosing class/interface/enum/record
method_name
enclosing method/constructor (or <none>)
file
file path (relative to scan target)
line
1-based line of the finding
arg_kind
classification of the relevant argument (literal, concatenation, variable, method_call, field, object_creation, expression, none)
secret_name
name of the secret-like variable/field
Security standards
CWE-798 (Use of Hard-coded Credentials)
OWASP ASVS 4.0: 2.10.4, 3.5.2, 6.4.1
OWASP Mobile Top 10 2024: M1
OWASP Top 10 2021: A7
OWASP Top 10: A2
PCI DSS 3.2: 6.5.10
PCI DSS 4.0: 6.2.4
Run locally
bash
cd codemods/java-security-blocker-mining/java-hardcoded-secrets-mining
npm test
# Scan a target project (read-only; emits metrics, leaves source unchanged)
npx codemod@latest workflow run \
-w codemods/java-security-blocker-mining/java-hardcoded-secrets-mining/workflow.yaml \
--target /path/to/java/project
Part of the java-security-blocker-mining suite covering 19 blocker-severity
Java vulnerability rules. Each codemod is read-only and emits a single named metric.
Ready to evolve your codebase?
Build tailored, compiler-aware skills to assess, plan, and automate complex codebase changes.