RepoTrust

Leaderboard github.com

78/xiaozhi-esp32

An MCP-based chatbot | 一个基于MCP的聊天机器人

  • View repository ↗
  • C++
  • ★ 33,212
  • commit 4de00aed7405
  • scored 2026-11-14
  • scoring prov-5+qual-2+sec-2

AI provenance

7%

explicit

Confidence
95%
Coverage
100%

Estimated share of AI-generated code. Explicit attribution is a lower bound.

Code quality

59/100

weak

Confidence
90%
Coverage
100%

Complexity, duplication, lint density, tests, CI, docs and review process.

Security

64/100

weak

Confidence
85%
Coverage
100%

Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.

AI provenance

7% explicit

Explicit AI attribution on 7% of first-party code added; an estimated 7% including velocity signals.

How the score is built

  • Explicitly attributed share7%
  • Unattributed share in AI-pace bursts22%
  • Estimated AI-generated share7%
  • AI tool configuration files1
  • Work sessions at AI pace2
  • Releases at AI pace1
  • Coding-style index (1.0+ means possible)0.00

Attributed AI tools

ToolCommitsLines addedFirst seenLast seen
OpenAI Codex3412,7682026-05-282026-11-13
Claude Code274,4412026-04-302026-10-29
Cursor agent102,1762026-06-072026-10-16
GitHub Copilot coding agent137212025-11-102026-10-19

Lines added per month all AI-attributed share

  1. 2024-081,999 · 0% AI
  2. 2024-09995 · 0% AI
  3. 2024-103,862 · 0% AI
  4. 2024-1156,230 · 0% AI
  5. 2024-122,718 · 0% AI
  6. 2025-016,322 · 0% AI
  7. 2025-029,291 · 0% AI
  8. 2025-0313,657 · 0% AI
  9. 2025-045,808 · 0% AI
  10. 2025-0511,285 · 0% AI
  11. 2025-068,751 · 0% AI
  12. 2025-079,043 · 0% AI
  13. 2025-083,862 · 0% AI
  14. 2025-0913,063 · 0% AI
  15. 2025-106,127 · 0% AI
  16. 2025-116,682 · 2% AI
  17. 2025-126,026 · 0% AI
  18. 2026-017,273 · 0% AI
  19. 2026-027,084 · 0% AI
  20. 2026-035,821 · 0% AI
  21. 2026-046,082 · 1% AI
  22. 2026-052,628 · 3% AI
  23. 2026-064,000 · 4% AI
  24. 2026-0713,803 · 38% AI
  25. 2026-086,087 · 14% AI
  26. 2026-098,947 · 44% AI
  27. 2026-1017,315 · 28% AI
  28. 2026-114,036 · 76% AI

Findings in AI-attributed lines vs the rest

From git blame: 12,178 lines trace to AI-attributed commits, 126,308 to others. Reported, not scored.

Findings per 1,000 linesAI-attributedOtherRatio
Code quality0.080.290.28×
Security0.250.122.07×

Evidence by analyzer

Explicit AI attributionok29 items
attributed_commit_share
7.2%
attributed_commits
82
attributed_loc
18,395
attributed_loc_share
7.4%
commits
1,132
effective_loc
248,797
tools_detected
4
AI tool configurationok1 item
artifacts
1
earliest_adoption
2026-07-18
tools_configured
1
workflow_agents
0
Commit velocityok2 items
excluded_import_loc
0
flagged_loc
53,798
flagged_loc_share
21.6%
flagged_units
2
max_loc_per_hour
12,850.75
measured_loc
248,797
median_loc_per_hour
30.88
pr_timed_units
480
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
805
Release velocityok1 item
flagged_releases
1
max_loc_per_day
17,105.10
releases
71
Coding styleok
count:assistant_voice
0
count:emoji_in_code
0
count:narrated_steps
0
count:placeholder
0
files:assistant_voice
0
files:emoji_in_code
0
files:narrated_steps
0
files:placeholder
0
index
0
lines_scanned
138,486
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
0
per_kloc:narrated_steps
0
per_kloc:placeholder
0
Findings in AI-written linesok
ai_lines
12,178
blame_failures
0
files_blamed
711
other_lines
126,308
quality:ai_findings
1
quality:ai_per_kloc
0.08
quality:other_findings
37
quality:other_per_kloc
0.29
quality:ratio
0.28
security:ai_findings
3
security:ai_per_kloc
0.25
security:other_findings
15
security:other_per_kloc
0.12
security:ratio
2.07

Code quality

59 weak

Code quality is weak: test-to-source ratio 0.05, CI runs tests; 14% of function code in complex or long functions; 46% duplicated lines. Weakest area: duplication.

How the score is built

  • Complexity65
  • Duplication6
  • Lint and smells92
  • Tests and CI65
  • Documentation65
  • Type safety40
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
90
function_nloc
80,701
functions
5,280
long_functions
49
many_param_functions
77
mean_ccn
2.84
p90_ccn
6
risky_nloc_share
14.3%
Duplication (jscpd)ok10 items
compared_lines
99,861
duplicated_lines
45,503
duplicated_share
45.6%
files
711
Lintok
category:best-practice
6
category:correctness
4
category:maintainability
28
findings
38
scanned_lines
138,486
weighted_findings
45.25
Tests and CIok4 items
  • CI config: .github/workflows/build.yml .github/workflows/build.yml
  • CI config: .github/workflows/release.yml .github/workflows/release.yml
  • CI config: .github/workflows/test-mcp.yml .github/workflows/test-mcp.yml
  • CI runs tests (unittest)
check:ci_present
yes
check:ci_runs_lint
no
check:ci_runs_tests
yes
check:has_tests
yes
check:test_ratio
no
check:tests_cochange
no
ci_files
3
cochange_commits
223
cochange_share
19.7%
source_lines
138,486
test_lines
7,058
test_ratio
0.05
Documentationok2 items
  • README.md README.md
  • LICENSE LICENSE
check:changelog
no
check:contributing
no
check:license
yes
check:readme
yes
readme_lines
130
Type safetyok
check:low_escape_density
yes
check:strict_config
no
escapes
16
escapes_per_kloc
1.88

Security

64 weak

Security posture is weak: 63 known vulnerabilities in 3 dependencies; 11 high-severity SAST findings; 11 high-severity workflow issues. Weakest area: ci actions.

How the score is built

  • Secrets79
  • Static analysis (SAST)97
  • Vulnerable dependencies73
  • CI workflows11
  • Security posture20
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
10
declared
10
lookup_errors
0
missing
0
recent
0
Secrets (gitleaks)ok
secrets_current
0
secrets_history
0
secrets_low_confidence
2
secrets_nonprod
5
Static analysis (opengrep)ok
findings
19
findings_high
11
findings_low
1
findings_medium
7
parse_errors
6
scanned_lines
138,486
weighted_findings
12.35
Dependencies (osv-scanner)ok
penalty
19
vulnerabilities
63
vulnerable_packages
3
vulns_critical
6
vulns_high
38
vulns_low
1
vulns_medium
17
vulns_unknown
1
CI workflows (zizmor)ok
findings
19
findings_high
11
findings_low
8
findings_medium
0
penalty
133.80
workflows
3
Security postureok
check:dependency_updates
no
check:lockfiles
yes
check:security_policy
no
check:signed_commits
yes
signed_commit_share
57.0%
unpinned_manifests
0
Release downloadsok5 items
binary_assets
1,525
signals
1
suspicious
0

Findings

6 critical64 high58 medium16 low2 info

SeverityRuleLocationMessageTool
critical osv/GHSA-332p-7hrc-92wf scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-332p-7hrc-92wf Dependencies (osv-scanner)
critical osv/GHSA-5x8w-8jj5-q52h scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4330, GHSA-5x8w-8jj5-q52h Dependencies (osv-scanner)
critical osv/GHSA-8g5g-8vmr-9782 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4332, GHSA-8g5g-8vmr-9782 Dependencies (osv-scanner)
critical osv/GHSA-v9pv-5gc8-w2m6 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4339, GHSA-v9pv-5gc8-w2m6 Dependencies (osv-scanner)
critical osv/GHSA-w889-685w-c8fh scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-w889-685w-c8fh Dependencies (osv-scanner)
critical osv/GHSA-xvh5-g6gv-559v scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4363, GHSA-xvh5-g6gv-559v Dependencies (osv-scanner)
high opengrep/python.lang.correctness.tempfile.tempfile-without-flush scripts/Image_Converter/lvgl_tools_gui.py:233 Using 'tmpfile.name' without '.flush()' or '.close()' may cause an error because the file may not exist when 'tmpfile.name' is used. Use '.flush()' or close the file before using 'tmpfile.name'. Lint
high opengrep/python.lang.correctness.common-mistakes.identical-is-comparison scripts/build.py:1127 Found identical comparison using is. Ensure this is what you intended. Lint
high opengrep/python.lang.best-practice.arbitrary-sleep scripts/p3_tools/p3_gui_player.py:177 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.best-practice.arbitrary-sleep scripts/p3_tools/p3_gui_player.py:42 time.sleep() call; did you mean to leave this in? Lint
high zizmor/unpinned-uses .github/workflows/build.yml:101 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/build.yml:27 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/build.yml:84 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:103 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:107 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:112 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:30 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:56 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:74 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:88 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/test-mcp.yml:27 unpinned action reference [confidence high] CI workflows (zizmor)
high opengrep/dockerfile.security.missing-user-entrypoint docker/firmware-builder/Dockerfile:32 By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit docker/firmware-builder/firmware_builder.py:190 Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit docker/firmware-builder/firmware_builder.py:212 Detected subprocess function 'check_output' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit scripts/Image_Converter/LVGLImage.py:84 Detected subprocess function 'check_output' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an... Static analysis (opengrep)
high opengrep/python.lang.security.audit.subprocess-shell-true scripts/Image_Converter/LVGLImage.py:87 Found 'subprocess' function 'check_output' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a... Static analysis (opengrep)
high osv/GHSA-22hg-r758-rrw9 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-22hg-r758-rrw9 Dependencies (osv-scanner)
high osv/GHSA-27h8-gf7j-v5hc scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4326, GHSA-27h8-gf7j-v5hc Dependencies (osv-scanner)
high osv/GHSA-3j72-p6qg-6xp7 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4341, GHSA-3j72-p6qg-6xp7 Dependencies (osv-scanner)
high osv/GHSA-4558-3h8r-v8xp scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4327, GHSA-4558-3h8r-v8xp Dependencies (osv-scanner)
high osv/GHSA-45hq-cxwh-f6vc scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2255, GHSA-45hq-cxwh-f6vc Dependencies (osv-scanner)
high osv/GHSA-4rr5-89j8-mwwm scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4328, GHSA-4rr5-89j8-mwwm Dependencies (osv-scanner)
high osv/GHSA-58r4-6rv3-gfh8 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4329, GHSA-58r4-6rv3-gfh8 Dependencies (osv-scanner)
high osv/GHSA-5x94-69rx-g8h2 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2254, GHSA-5x94-69rx-g8h2 Dependencies (osv-scanner)
high osv/GHSA-5xm2-6676-qcp9 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-5xm2-6676-qcp9 Dependencies (osv-scanner)
high osv/GHSA-62p4-gmf7-7g93 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3493, GHSA-62p4-gmf7-7g93 Dependencies (osv-scanner)
high osv/GHSA-65qm-jvmh-6pqg scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-65qm-jvmh-6pqg Dependencies (osv-scanner)
high osv/GHSA-6r8x-57c9-28j4 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3451, GHSA-6r8x-57c9-28j4 Dependencies (osv-scanner)
high osv/GHSA-78g4-xqwv-q3g8 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-78g4-xqwv-q3g8 Dependencies (osv-scanner)
high osv/GHSA-7mwm-ghpf-9vrm scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4331, GHSA-7mwm-ghpf-9vrm Dependencies (osv-scanner)
high osv/GHSA-8v84-f9pq-wr9x scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2253, GHSA-8v84-f9pq-wr9x Dependencies (osv-scanner)
high osv/GHSA-9hw9-ch79-4vh6 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3453, GHSA-9hw9-ch79-4vh6 Dependencies (osv-scanner)
high osv/GHSA-9v9v-9qvf-h2hj scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4343, GHSA-9v9v-9qvf-h2hj Dependencies (osv-scanner)
high osv/GHSA-c6hw-5grf-ff96 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-c6hw-5grf-ff96 Dependencies (osv-scanner)
high osv/GHSA-cfh3-3jmp-rvhc scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2249, GHSA-cfh3-3jmp-rvhc Dependencies (osv-scanner)
high osv/GHSA-f2g6-542v-9j58 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-f2g6-542v-9j58 Dependencies (osv-scanner)
high osv/GHSA-g4qv-2jxx-769h scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4342, GHSA-g4qv-2jxx-769h Dependencies (osv-scanner)
high osv/GHSA-g7cr-3p24-7wf7 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-g7cr-3p24-7wf7 Dependencies (osv-scanner)
high osv/GHSA-g842-9rc4-69pw scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4338, GHSA-g842-9rc4-69pw Dependencies (osv-scanner)
high osv/GHSA-gg2r-wvfm-q9rx scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-gg2r-wvfm-q9rx Dependencies (osv-scanner)
high osv/GHSA-j4m9-6w36-pw47 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-j4m9-6w36-pw47 Dependencies (osv-scanner)
high osv/GHSA-jg86-v3jv-hrpm scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-jg86-v3jv-hrpm Dependencies (osv-scanner)
high osv/GHSA-jjj6-mw9f-p565 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3495, GHSA-jjj6-mw9f-p565 Dependencies (osv-scanner)
high osv/GHSA-mrfp-p49p-3hf2 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-mrfp-p49p-3hf2 Dependencies (osv-scanner)
high osv/GHSA-p4wg-p73j-c528 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-p4wg-p73j-c528 Dependencies (osv-scanner)
high osv/GHSA-pchr-8j38-3x4p scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4334, GHSA-pchr-8j38-3x4p Dependencies (osv-scanner)
high osv/GHSA-phj9-mv4w-65pm scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2256, GHSA-phj9-mv4w-65pm Dependencies (osv-scanner)
high osv/GHSA-pwv6-vv43-88gr scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2252, GHSA-pwv6-vv43-88gr Dependencies (osv-scanner)
high osv/GHSA-q45j-58j2-45rg scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-q45j-58j2-45rg Dependencies (osv-scanner)
high osv/GHSA-vjc4-5qp5-m44j scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3496, GHSA-vjc4-5qp5-m44j Dependencies (osv-scanner)
high osv/GHSA-whj4-6x5x-4v2j scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2250, GHSA-whj4-6x5x-4v2j Dependencies (osv-scanner)
high osv/GHSA-xcvg-w56q-r89m scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-xcvg-w56q-r89m Dependencies (osv-scanner)
high osv/GHSA-xgh8-jp6q-p5x8 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4335, GHSA-xgh8-jp6q-p5x8 Dependencies (osv-scanner)
high osv/GHSA-xj96-63gp-2gmr scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3454, GHSA-xj96-63gp-2gmr Dependencies (osv-scanner)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit scripts/build.py:77 Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit scripts/publish_firmware.py:162 Detected subprocess function 'check_output' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit scripts/spiffs_assets/build.py:385 Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit scripts/spiffs_assets/build.py:62 Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit scripts/spiffs_assets/build_all.py:55 Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit scripts/spiffs_assets/spiffs_assets_gen.py:245 Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:178 Is "is_alpha_only" a function or an attribute? If it is a function, you may have meant self.is_alpha_only() because self.is_alpha_only is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:178 Is "is_indexed" a function or an attribute? If it is a function, you may have meant self.is_indexed() because self.is_indexed is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding scripts/Image_Converter/LVGLImage.py:372 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:586 Is "is_indexed" a function or an attribute? If it is a function, you may have meant self.cf.is_indexed() because self.cf.is_indexed is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:674 Is "is_indexed" a function or an attribute? If it is a function, you may have meant self.is_indexed() because self.is_indexed is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:687 Is "is_indexed" a function or an attribute? If it is a function, you may have meant self.cf.is_indexed() because self.cf.is_indexed is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:793 Is "is_indexed" a function or an attribute? If it is a function, you may have meant self.cf.is_indexed() because self.cf.is_indexed is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:809 Is "is_alpha_only" a function or an attribute? If it is a function, you may have meant self.cf.is_alpha_only() because self.cf.is_alpha_only is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:824 Is "is_colormap" a function or an attribute? If it is a function, you may have meant self.cf.is_colormap() because self.cf.is_colormap is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:861 Is "is_indexed" a function or an attribute? If it is a function, you may have meant cf.is_indexed() because cf.is_indexed is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:863 Is "is_alpha_only" a function or an attribute? If it is a function, you may have meant cf.is_alpha_only() because cf.is_alpha_only is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:865 Is "is_luma_only" a function or an attribute? If it is a function, you may have meant cf.is_luma_only() because cf.is_luma_only is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/Image_Converter/LVGLImage.py:867 Is "is_colormap" a function or an attribute? If it is a function, you may have meant cf.is_colormap() because cf.is_colormap is always true. Lint
medium opengrep/python.requests.best-practice.use-timeout scripts/download_github_runs.py:112 Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a... Lint
medium opengrep/python.requests.best-practice.use-timeout scripts/download_github_runs.py:76 Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a... Lint
medium opengrep/python.lang.correctness.use-sys-exit scripts/gen_lang.py:187 Detected use of `exit`. Use `sys.exit` over the python shell `exit` built-in. `exit` is a helper for the interactive shell and may not be available on all Python implementations. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:154 Is "is_paused" a function or an attribute? If it is a function, you may have meant self.is_paused() because self.is_paused is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:155 Is "is_paused" a function or an attribute? If it is a function, you may have meant self.is_paused() because self.is_paused is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:160 Is "is_playing" a function or an attribute? If it is a function, you may have meant self.is_playing() because self.is_playing is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:163 Is "is_playing" a function or an attribute? If it is a function, you may have meant self.is_playing() because self.is_playing is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:205 Is "is_playing" a function or an attribute? If it is a function, you may have meant self.is_playing() because self.is_playing is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:206 Is "is_paused" a function or an attribute? If it is a function, you may have meant self.is_paused() because self.is_paused is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:210 Is "is_playing" a function or an attribute? If it is a function, you may have meant self.is_playing() because self.is_playing is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:211 Is "is_paused" a function or an attribute? If it is a function, you may have meant self.is_paused() because self.is_paused is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:211 Is "is_paused" a function or an attribute? If it is a function, you may have meant self.is_paused() because self.is_paused is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:212 Is "is_paused" a function or an attribute? If it is a function, you may have meant self.is_paused() because self.is_paused is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:220 Is "is_playing" a function or an attribute? If it is a function, you may have meant self.is_playing() because self.is_playing is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:220 Is "is_paused" a function or an attribute? If it is a function, you may have meant self.is_paused() because self.is_paused is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:221 Is "is_playing" a function or an attribute? If it is a function, you may have meant self.is_playing() because self.is_playing is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:222 Is "is_paused" a function or an attribute? If it is a function, you may have meant self.is_paused() because self.is_paused is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:83 Is "is_playing" a function or an attribute? If it is a function, you may have meant self.is_playing() because self.is_playing is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses scripts/p3_tools/p3_gui_player.py:84 Is "is_paused" a function or an attribute? If it is a function, you may have meant self.is_paused() because self.is_paused is always true. Lint
medium opengrep/python.requests.best-practice.use-timeout scripts/versions.py:201 Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a... Lint
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected docker/firmware-builder/firmware_builder.py:321 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/c.lang.security.function-use-after-free main/boards/espressif/esp32-s3-lcd-ev-board-2/esp_lcd_gc9503.c:410 Variable 'gc9503' was passed to a function after being freed. This can lead to undefined behavior. [confidence low] Static analysis (opengrep)
medium opengrep/c.lang.security.function-use-after-free main/boards/espressif/esp32-s3-lcd-ev-board/esp_lcd_gc9503.c:410 Variable 'gc9503' was passed to a function after being freed. This can lead to undefined behavior. [confidence low] Static analysis (opengrep)
medium opengrep/c.lang.security.function-use-after-free main/boards/kevin/yuying-313lcd/esp_lcd_gc9503.c:384 Variable 'gc9503' was passed to a function after being freed. This can lead to undefined behavior. [confidence low] Static analysis (opengrep)
medium opengrep/c.lang.security.insecure-use-memset main/display/lvgl_display/gif/gifdec.c:119 When handling sensitive information in a buffer, it's important to ensure that the data is securely erased before the buffer is deleted or reused. While `memset()` is commonly used for this purpose, it can leave sensitive information... Static analysis (opengrep)
medium opengrep/c.lang.security.insecure-use-memset main/display/lvgl_display/gif/gifdec.c:137 When handling sensitive information in a buffer, it's important to ensure that the data is securely erased before the buffer is deleted or reused. While `memset()` is commonly used for this purpose, it can leave sensitive information... Static analysis (opengrep)
medium osv/GHSA-24rc-8hj2-v98c scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-24rc-8hj2-v98c Dependencies (osv-scanner)
medium osv/GHSA-254f-3936-288h scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-254f-3936-288h Dependencies (osv-scanner)
medium osv/GHSA-462x-pgg6-55fp scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-462x-pgg6-55fp Dependencies (osv-scanner)
medium osv/GHSA-4rm8-3hmm-39fg scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4340, GHSA-4rm8-3hmm-39fg Dependencies (osv-scanner)
medium osv/GHSA-4x4j-2g7c-83w6 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2257, GHSA-4x4j-2g7c-83w6 Dependencies (osv-scanner)
medium osv/GHSA-5xmw-vc9v-4wf2 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2251, GHSA-5xmw-vc9v-4wf2 Dependencies (osv-scanner)
medium osv/GHSA-654x-cwwv-5j9c scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4336, GHSA-654x-cwwv-5j9c Dependencies (osv-scanner)
medium osv/GHSA-74r2-7ff9-mjj2 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-74r2-7ff9-mjj2 Dependencies (osv-scanner)
medium osv/GHSA-fc9g-5qg7-mf45 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-fc9g-5qg7-mf45 Dependencies (osv-scanner)
medium osv/GHSA-fj7v-r99m-22gq scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3494, GHSA-fj7v-r99m-22gq Dependencies (osv-scanner)
medium osv/GHSA-p8hx-v2p6-rp84 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4337, GHSA-p8hx-v2p6-rp84 Dependencies (osv-scanner)
medium osv/GHSA-r73j-pqj5-w3x7 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2874, GHSA-r73j-pqj5-w3x7 Dependencies (osv-scanner)
medium osv/GHSA-rfgq-q3w2-pmv2 scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-rfgq-q3w2-pmv2 Dependencies (osv-scanner)
medium osv/GHSA-vx6w-vv9f-6gvg scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-vx6w-vv9f-6gvg Dependencies (osv-scanner)
medium osv/GHSA-wjx4-4jcj-g98j scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-165, GHSA-wjx4-4jcj-g98j Dependencies (osv-scanner)
medium osv/GHSA-wqgw-9xfh-qf2g scripts/Image_Converter/requirements.txt [email protected] (PyPI) is affected by GHSA-wqgw-9xfh-qf2g Dependencies (osv-scanner)
medium osv/GHSA-6p56-wp2h-9hxr scripts/p3_tools/requirements.txt [email protected] (PyPI) is affected by GHSA-6p56-wp2h-9hxr Dependencies (osv-scanner)
medium osv/GHSA-fpfv-jqm9-f5jm scripts/p3_tools/requirements.txt [email protected] (PyPI) is affected by GHSA-fpfv-jqm9-f5jm Dependencies (osv-scanner)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected scripts/spiffs_assets/spiffs_assets_gen.py:127 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
low opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command scripts/mp3_to_ogg.sh:3 Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may... Lint
low zizmor/artipacked .github/workflows/build.yml:26 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low zizmor/artipacked .github/workflows/build.yml:83 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low zizmor/artipacked .github/workflows/release.yml:103 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low zizmor/artipacked .github/workflows/release.yml:30 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low zizmor/artipacked .github/workflows/release.yml:74 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low zizmor/artipacked .github/workflows/test-mcp.yml:27 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low gitleaks/generic-api-key docs/mcp-protocol.md:145 Possible generic-api-key secret in history (commit 17e35145f3); removed from the current tree but still retrievable Secrets (gitleaks)
low gitleaks/generic-api-key docs/mcp-protocol_zh.md:138 Possible generic-api-key secret in history (commit 17e35145f3); removed from the current tree but still retrievable Secrets (gitleaks)
low gitleaks/generic-api-key docs/mqtt-udp.md:124 Possible generic-api-key secret in the current tree (test/docs/example file) Secrets (gitleaks)
low gitleaks/generic-api-key docs/mqtt-udp_zh.md:121 Possible generic-api-key secret in the current tree (test/docs/example file) Secrets (gitleaks)
low gitleaks/generic-api-key main/boards/m5stack-tab5/sdkconfig.tab5:2161 Possible generic-api-key secret in history (commit f7ea248845); removed from the current tree but still retrievable Secrets (gitleaks)
low opengrep/python.lang.security.audit.network.avoid-bind-to-all-interfaces scripts/audio_debug_server.py:13 Running `socket.bind` to 0.0.0.0, or empty string could unexpectedly expose the server publicly as it binds to all available interfaces. Consider instead getting correct address from an environment variable or configuration file.... Static analysis (opengrep)
low gitleaks/generic-api-key scripts/license_tools/README.md:133 Possible generic-api-key secret in history (commit ee4a2ab5fc); removed from the current tree but still retrievable Secrets (gitleaks)
low osv/GHSA-g7vv-2v7x-gj9p scripts/p3_tools/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1976, GHSA-g7vv-2v7x-gj9p Dependencies (osv-scanner)
low gitleaks/generic-api-key sdkconfig.box:1863 Possible generic-api-key secret in history (commit a2487f46c8); removed from the current tree but still retrievable Secrets (gitleaks)
info zizmor/template-injection .github/workflows/release.yml:134 code injection via template expansion [confidence low] CI workflows (zizmor)
info zizmor/template-injection .github/workflows/release.yml:134 code injection via template expansion [confidence low] CI workflows (zizmor)

Tools and coverage

Every analyzer that ran on this commit. A failed or skipped tool is a coverage gap: its share of the score is left out and the coverage figure drops.

AnalyzerPillarStatusVersionFindingsNote
AI tool configurationAI provenanceoksignatures-v10
Explicit AI attributionAI provenanceoksignatures-v10
Release velocityAI provenanceokprov-50
Coding styleAI provenanceok—0
Commit velocityAI provenanceokprov-50
Findings in AI-written linesAI provenanceokgit-blame0
Complexity (lizard)Code qualityoklizard 1.25.10
DocumentationCode qualityok—0
Duplication (jscpd)Code qualityokrepotrust-dup-w60
LintCode qualityokopengrep 1.33.1; rules f1d2b562b41438
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityokzizmor 1.32.019
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.163
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b41419
OpenSSF ScorecardSecurityskipped—0no published OpenSSF Scorecard result for this repo
Secrets (gitleaks)Securityokgitleaks 8.30.17

Score history

ScoredCommitScoringAI provenanceQualitySecurity
2026-11-144de00aed7405prov-5+qual-2+sec-27%5964

Embed a badge

Maintainers can show these in a README. Badges update when the repository is re-scored.

[![RepoTrust ai](https://repotrust.synapticcyber.com/badge/github.com/78/xiaozhi-esp32/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/78/xiaozhi-esp32/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/78/xiaozhi-esp32/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/78/xiaozhi-esp32/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/78/xiaozhi-esp32/security.svg)](https://repotrust.synapticcyber.com/r/github.com/78/xiaozhi-esp32/)
Full text report
  • Repository: https://github.com/78/xiaozhi-esp32
  • Commit: 4de00aed740595a8713b01f8332b9b2cf30685bc
  • Generated: 2026-11-14T15:08:34+00:00
  • Scorer 0.1.0, scoring prov-5+qual-2+sec-2, report schema v2

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 7 explicit 95% 100%
Code quality 59 weak 90% 100%
Security 64 weak 85% 100%

AI provenance

Explicit AI attribution on 7% of first-party code added; an estimated 7% including velocity signals.

  • Explicitly attributed share (lower bound): 7.4%
  • Unattributed share in AI-consistent velocity bursts: 21.6%
  • Estimated AI-generated share: 7.4%
AI tool Attributed commits Lines added
OpenAI Codex 34 12,768
Claude Code 27 4,441
GitHub Copilot coding agent 13 721
Cursor agent 10 2,176
  • AI tooling configured in repo: generic-agent

Current source lines last changed by AI-attributed commits: 12,178 of 138,486.

Findings per 1,000 lines AI-attributed Other Ratio
Quality 0.082 0.293 0.28x
Security 0.246 0.119 2.07x
Month Lines added Attributed to AI
2025-12 6,026 0%
2026-01 7,273 0%
2026-02 7,084 0%
2026-03 5,821 0%
2026-04 6,082 1%
2026-05 2,628 3%
2026-06 4,000 4%
2026-07 13,803 38%
2026-08 6,087 14%
2026-09 8,947 44%
2026-10 17,315 28%
2026-11 4,036 76%

Evidence

  • OpenAI Codex: PR branch 'codex/fix-cst3530-dependency-condition' (4de00aed7405)
  • OpenAI Codex: PR branch 'codex/bump-version-2.6.0' (67ca62d4bb7d)
  • OpenAI Codex: PR branch 'codex/mcp-20260728' (69f22bf2bb63)
  • OpenAI Codex: PR branch 'codex/mqtt-udp-probe-client' (5b1dbe0e0058)
  • OpenAI Codex: PR branch 'codex/fix-camera-upload-write-count' (59efe48e34ac)
  • OpenAI Codex: on merged branch (2aed8049ea) (58b2884b7e34)
  • OpenAI Codex: on merged branch (05895ce20e) (58b1b8e7a488)
  • OpenAI Codex: on merged branch (9d49da8a1c) (96738235e87f)
  • OpenAI Codex: on merged branch (a012725019) (8746347302dc)
  • OpenAI Codex: on merged branch (a012725019) (4007326258d5)
  • OpenAI Codex: on merged branch (a012725019) (5d863f551b46)
  • OpenAI Codex: on merged branch (05895ce20e) (28890ed1a36a)
  • Claude Code: trailer 'Co-Authored-By: Claude' (5badb80a9494)
  • Claude Code: trailer 'Co-Authored-By: Claude' (e1046dc6dd33)
  • Claude Code: trailer 'Co-authored-by: Claude' (c435f99a8806)

AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.

Code quality

Code quality is weak: test-to-source ratio 0.05, CI runs tests; 14% of function code in complex or long functions; 46% duplicated lines. Weakest area: duplication.

Area Score
Complexity (lizard) 65
Duplication 6
Code smells (Opengrep) 92
Tests and CI 65
Documentation 65
Type safety 40
Process (Scorecard review/maintenance) n/a
  • Functions: 5,280; mean complexity 2.8, 90th percentile 6; 90 complex and 49 long functions
  • Duplicated lines: 45.6% of 99,861 compared
  • Tests: 7,058 test lines for 138,486 source lines (ratio 0.05); CI test commands: unittest; 20% of recent source commits also change tests
  • Docs missing or thin: contributing, changelog

Most complex functions:

Security

Security posture is weak: 63 known vulnerabilities in 3 dependencies; 11 high-severity SAST findings; 11 high-severity workflow issues. Weakest area: ci actions.

Area Score
Secrets (gitleaks, tree + history) 79
Static analysis (Opengrep) 97
Vulnerable dependencies (OSV) 73
CI workflows (zizmor) 11
Posture (policy, updates, signing, lockfiles) 20
OpenSSF Scorecard n/a
  • Known vulnerabilities: 63 in 3 packages (critical 6, high 38, medium 17, low 1)

  • Posture checks passed: signed commits, lockfiles; missing: security policy, dependency updates

Top findings

Severity Finding Location
critical osv/GHSA-5x8w-8jj5-q52h: [email protected] (PyPI) is affected by PYSEC-2026-4330, GHSA-5x8w-8jj5-q52h scripts/Image_Converter/requirements.txt
critical osv/GHSA-8g5g-8vmr-9782: [email protected] (PyPI) is affected by PYSEC-2026-4332, GHSA-8g5g-8vmr-9782 scripts/Image_Converter/requirements.txt
critical osv/GHSA-v9pv-5gc8-w2m6: [email protected] (PyPI) is affected by PYSEC-2026-4339, GHSA-v9pv-5gc8-w2m6 scripts/Image_Converter/requirements.txt
critical osv/GHSA-xvh5-g6gv-559v: [email protected] (PyPI) is affected by PYSEC-2026-4363, GHSA-xvh5-g6gv-559v scripts/Image_Converter/requirements.txt
critical osv/GHSA-332p-7hrc-92wf: [email protected] (PyPI) is affected by GHSA-332p-7hrc-92wf scripts/Image_Converter/requirements.txt
critical osv/GHSA-w889-685w-c8fh: [email protected] (PyPI) is affected by GHSA-w889-685w-c8fh scripts/Image_Converter/requirements.txt
high opengrep/dockerfile.security.missing-user-entrypoint: By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium] docker/firmware-builder/Dockerfile:32
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] docker/firmware-builder/firmware_builder.py:190
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'check_output' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] docker/firmware-builder/firmware_builder.py:212
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'check_output' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] scripts/Image_Converter/LVGLImage.py:84
high opengrep/python.lang.security.audit.subprocess-shell-true: Found 'subprocess' function 'check_output' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead. [confidence medium] scripts/Image_Converter/LVGLImage.py:87
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] scripts/build.py:77
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'check_output' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] scripts/publish_firmware.py:162
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] scripts/spiffs_assets/build.py:62
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] scripts/spiffs_assets/build.py:385
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] scripts/spiffs_assets/build_all.py:55
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] scripts/spiffs_assets/spiffs_assets_gen.py:245
high osv/GHSA-cfh3-3jmp-rvhc: [email protected] (PyPI) is affected by PYSEC-2026-2249, GHSA-cfh3-3jmp-rvhc scripts/Image_Converter/requirements.txt
high osv/GHSA-whj4-6x5x-4v2j: [email protected] (PyPI) is affected by PYSEC-2026-2250, GHSA-whj4-6x5x-4v2j scripts/Image_Converter/requirements.txt
high osv/GHSA-pwv6-vv43-88gr: [email protected] (PyPI) is affected by PYSEC-2026-2252, GHSA-pwv6-vv43-88gr scripts/Image_Converter/requirements.txt
high osv/GHSA-8v84-f9pq-wr9x: [email protected] (PyPI) is affected by PYSEC-2026-2253, GHSA-8v84-f9pq-wr9x scripts/Image_Converter/requirements.txt
high osv/GHSA-5x94-69rx-g8h2: [email protected] (PyPI) is affected by PYSEC-2026-2254, GHSA-5x94-69rx-g8h2 scripts/Image_Converter/requirements.txt
high osv/GHSA-45hq-cxwh-f6vc: [email protected] (PyPI) is affected by PYSEC-2026-2255, GHSA-45hq-cxwh-f6vc scripts/Image_Converter/requirements.txt
high osv/GHSA-phj9-mv4w-65pm: [email protected] (PyPI) is affected by PYSEC-2026-2256, GHSA-phj9-mv4w-65pm scripts/Image_Converter/requirements.txt
high osv/GHSA-6r8x-57c9-28j4: [email protected] (PyPI) is affected by PYSEC-2026-3451, GHSA-6r8x-57c9-28j4 scripts/Image_Converter/requirements.txt

Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.

Distribution signals

Signals consistent with a repository that exists to distribute a download. They are heuristics, not a verdict; release files were not downloaded or inspected.

Repository profile

  • Source lines: 138,486; test lines: 7,058
Language Lines
C++ 92,562
C 37,414
Python 15,555
Shell 13