Leaderboard github.com
BurntSushi/ripgrep
ripgrep recursively searches directories for a regex pattern while respecting your gitignore
AI provenance
0%
possible
- Confidence
- 65%
- Coverage
- 100%
Estimated share of AI-generated code. Explicit attribution is a lower bound.
Code quality
74/100
adequate
- Confidence
- 90%
- Coverage
- 100%
Complexity, duplication, lint density, tests, CI, docs and review process.
Security
71/100
adequate
- Confidence
- 85%
- Coverage
- 100%
Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.
AI provenance
0% possible
Weak signals consistent with AI-assisted development.
How the score is built
- Explicitly attributed share0%
- Unattributed share in AI-pace bursts1%
- Estimated AI-generated share0%
- AI tool configuration files0
- Work sessions at AI pace1
- Releases at AI pace0
- Coding-style index (1.0+ means possible)0.06
Lines added per month all AI-attributed share
- 2016-0272 · 0% AI
- 2016-03571 · 0% AI
- 2016-0447 · 0% AI
- 2016-06709 · 0% AI
- 2016-082,954 · 0% AI
- 2016-099,078 · 0% AI
- 2016-105,951 · 0% AI
- 2016-115,094 · 0% AI
- 2016-12220 · 0% AI
- 2017-01756 · 0% AI
- 2017-02526 · 0% AI
- 2017-03912 · 0% AI
- 2017-04676 · 0% AI
- 2017-0593 · 0% AI
- 2017-06146 · 0% AI
- 2017-07696 · 0% AI
- 2017-08211 · 0% AI
- 2017-09111 · 0% AI
- 2017-10272 · 0% AI
- 2017-1166 · 0% AI
- 2017-12131 · 0% AI
- 2018-01814 · 0% AI
- 2018-023,855 · 0% AI
- 2018-03374 · 0% AI
- 2018-0417,396 · 0% AI
- 2018-056 · 0% AI
- 2018-06338 · 0% AI
- 2018-07599 · 0% AI
- 2018-088,522 · 0% AI
- 2018-09404 · 0% AI
- 2018-101 · 0% AI
- 2018-1169 · 0% AI
- 2018-1274 · 0% AI
- 2019-01901 · 0% AI
- 2019-0221 · 0% AI
- 2019-03127 · 0% AI
- 2019-042,101 · 0% AI
- 2019-0513 · 0% AI
- 2019-06124 · 0% AI
- 2019-0729 · 0% AI
- 2019-08567 · 0% AI
- 2019-09175 · 0% AI
- 2019-10220 · 0% AI
- 2019-1181 · 0% AI
- 2019-12182 · 0% AI
- 2020-0120 · 0% AI
- 2020-023,531 · 0% AI
- 2020-03167 · 0% AI
- 2020-04231 · 0% AI
- 2020-0587 · 0% AI
- 2020-0613 · 0% AI
- 2020-07137 · 0% AI
- 2020-0820 · 0% AI
- 2020-096 · 0% AI
- 2020-1052 · 0% AI
- 2020-11102 · 0% AI
- 2020-12203 · 0% AI
- 2021-01148 · 0% AI
- 2021-020 · 0% AI
- 2021-0332 · 0% AI
- 2021-0411 · 0% AI
- 2021-051,057 · 0% AI
- 2021-06579 · 0% AI
- 2021-07131 · 0% AI
- 2021-0823 · 0% AI
- 2021-091 · 0% AI
- 2021-1017 · 0% AI
- 2021-1163 · 0% AI
- 2022-0115 · 0% AI
- 2022-021 · 0% AI
- 2022-038 · 0% AI
- 2022-045 · 0% AI
- 2022-05141 · 0% AI
- 2022-0639 · 0% AI
- 2022-0774 · 0% AI
- 2022-0843 · 0% AI
- 2022-092 · 0% AI
- 2022-104 · 0% AI
- 2022-11263 · 0% AI
- 2022-1237 · 0% AI
- 2023-01116 · 0% AI
- 2023-027 · 0% AI
- 2023-039 · 0% AI
- 2023-0442 · 0% AI
- 2023-059 · 0% AI
- 2023-062,171 · 0% AI
- 2023-071,253 · 0% AI
- 2023-08142 · 0% AI
- 2023-093,200 · 0% AI
- 2023-1012,305 · 0% AI
- 2023-11871 · 0% AI
- 2023-12135 · 0% AI
- 2024-01110 · 0% AI
- 2024-0221 · 0% AI
- 2024-037 · 0% AI
- 2024-0435 · 0% AI
- 2024-0561 · 0% AI
- 2024-0639 · 0% AI
- 2024-075 · 0% AI
- 2024-0858 · 0% AI
- 2024-09283 · 0% AI
- 2024-1014 · 0% AI
- 2024-11175 · 0% AI
- 2024-1227 · 0% AI
- 2025-011 · 0% AI
- 2025-0214 · 0% AI
- 2025-031 · 0% AI
- 2025-0430 · 0% AI
- 2025-0569 · 0% AI
- 2025-0639 · 0% AI
- 2025-07894 · 0% AI
- 2025-08265 · 0% AI
- 2025-09523 · 0% AI
- 2025-10447 · 0% AI
- 2025-1124 · 0% AI
- 2025-1225 · 0% AI
- 2026-0179 · 0% AI
- 2026-0214 · 0% AI
- 2026-03165 · 0% AI
- 2026-041 · 0% AI
- 2026-05178 · 0% AI
- 2026-06652 · 0% AI
- 2026-073,665 · 0% AI
- 2026-0814 · 0% AI
- 2026-101,115 · 0% AI
- 2026-1137 · 0% AI
Evidence by analyzer
Explicit AI attributionok
- attributed_commit_share
- 0.0%
- attributed_commits
- 0
- attributed_loc
- 0
- attributed_loc_share
- 0.0%
- commits
- 2,242
- effective_loc
- 102,895
- tools_detected
- 0
AI tool configurationok
- artifacts
- 0
- tools_configured
- 0
- workflow_agents
- 0
Commit velocityok1 item
- excluded_import_loc
- 17,185
- flagged_loc
- 1,001
- flagged_loc_share
- 1.2%
- flagged_units
- 1
- max_loc_per_hour
- 2,172.86
- measured_loc
- 85,710
- median_loc_per_hour
- 54.19
- pr_timed_units
- 350
- pre_ai_era_burst_loc
- 11,877
- pre_ai_era_bursts
- 4
- pre_ai_era_measured_loc
- 55,495
- work_units
- 952
Release velocityok
- flagged_releases
- 0
- max_loc_per_day
- 841.90
- releases
- 99
Coding styleok3 items
- step-by-step narration comment: // First, check that the parent gitignore file isn't detected if the
- step-by-step narration comment: // Finally, add a leading slash. In the local file case, this turns
- step-by-step narration comment: // now we just pick one.
- count:assistant_voice
- 0
- count:emoji_in_code
- 0
- count:narrated_steps
- 3
- count:placeholder
- 0
- files:assistant_voice
- 0
- files:emoji_in_code
- 0
- files:narrated_steps
- 3
- files:placeholder
- 0
- index
- 0.06
- lines_scanned
- 49,948
- per_kloc:assistant_voice
- 0
- per_kloc:emoji_in_code
- 0
- per_kloc:narrated_steps
- 0.06
- per_kloc:placeholder
- 0
Code quality
74 adequate
Code quality is adequate: test-to-source ratio 0.13, no CI test run detected; 7% of function code in complex or long functions; 11% duplicated lines. Weakest area: duplication.
How the score is built
- Complexity81
- Duplication51
- Lint and smells100
- Tests and CI58
- Documentation100
- Type safetynot measured
- Review process75
Evidence by analyzer
Complexity (lizard)ok10 items
- from_low_args in crates/core/flags/hiargs.rs: complexity 42, 176 lines
- parse_star in crates/globset/src/glob.rs: complexity 30, 59 lines
- matched_ignore in crates/ignore/src/dir.rs: complexity 29, 123 lines
- check in crates/regex/src/ban.rs: complexity 25, 46 lines
- finish in crates/printer/src/summary.rs: complexity 22, 56 lines
- parse in crates/core/flags/parse.rs: complexity 21, 59 lines
- run_one in crates/ignore/src/walk.rs: complexity 21, 78 lines
- run in crates/core/main.rs: complexity 20, 24 lines
- add_child_path_with_found_ignore_files in crates/ignore/src/dir.rs: complexity 20, 127 lines
- matched_with_errors_impl in crates/ignore/src/incremental.rs: complexity 20, 67 lines
- complex_functions
- 25
- function_nloc
- 24,698
- functions
- 2,192
- long_functions
- 4
- many_param_functions
- 0
- mean_ccn
- 2.18
- p90_ccn
- 5
- risky_nloc_share
- 7.1%
Duplication (jscpd)ok10 items
- 6+ duplicated lines: crates/cli/src/decompress.rs:78 and crates/cli/src/decompress.rs:108
- 6+ duplicated lines: crates/cli/src/decompress.rs:264 and crates/cli/src/process.rs:120
- 6+ duplicated lines: crates/cli/src/lib.rs:253 and crates/cli/src/lib.rs:285
- 6+ duplicated lines: crates/cli/src/process.rs:96 and crates/cli/src/process.rs:184
- 6+ duplicated lines: crates/core/flags/config.rs:139 and crates/core/flags/config.rs:164
- 6+ duplicated lines: crates/core/flags/defs.rs:1103 and crates/core/flags/defs.rs:1128
- 6+ duplicated lines: crates/core/flags/doc/help.rs:177 and crates/core/flags/doc/man.rs:96
- 6+ duplicated lines: crates/core/main.rs:109 and crates/core/main.rs:236
- 6+ duplicated lines: crates/globset/src/glob.rs:673 and crates/ignore/src/overrides.rs:163
- 6+ duplicated lines: crates/globset/src/glob.rs:1138 and crates/globset/src/glob.rs:1168
- compared_lines
- 36,158
- duplicated_lines
- 4,091
- duplicated_share
- 11.3%
- files
- 92
Lintok
- findings
- 0
- scanned_lines
- 49,936
- weighted_findings
- 0
Tests and CIok3 items
- CI config: .github/workflows/ci.yml
.github/workflows/ci.yml - CI config: .github/workflows/release.yml
.github/workflows/release.yml - CI runs linters (rustfmt, cargo fmt)
- check:ci_present
- yes
- check:ci_runs_lint
- yes
- check:ci_runs_tests
- no
- check:has_tests
- yes
- check:test_ratio
- no
- check:tests_cochange
- no
- ci_files
- 2
- cochange_commits
- 160
- cochange_share
- 16.2%
- source_lines
- 49,948
- test_lines
- 6,440
- test_ratio
- 0.13
Documentationok4 items
- README.md
README.md - COPYING
COPYING - CONTRIBUTING.md
CONTRIBUTING.md - CHANGELOG.md
CHANGELOG.md
- check:changelog
- yes
- check:contributing
- yes
- check:license
- yes
- check:readme
- yes
- readme_lines
- 407
Type safetyskipped
Security
71 adequate
Security posture is adequate: 22 high-severity workflow issues. Weakest area: ci actions.
How the score is built
- Secrets100
- Static analysis (SAST)98
- Vulnerable dependencies100
- CI workflows1
- Security posture20
- OpenSSF Scorecard43
Evidence by analyzer
OpenSSF Scorecardok12 items
- Scorecard Maintained: 10/10 (16 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10)
- Scorecard Code-Review: 5/10 (Found 15/27 approved changesets -- score normalized to 5)
- Scorecard Binary-Artifacts: 10/10 (no binaries found in the repo)
- Scorecard Dangerous-Workflow: 10/10 (no dangerous workflow patterns detected)
- Scorecard Token-Permissions: 0/10 (detected GitHub workflow tokens with excessive permissions)
- Scorecard Pinned-Dependencies: 0/10 (dependency not pinned by hash detected -- score normalized to 0)
- Scorecard CII-Best-Practices: 0/10 (no effort to earn an OpenSSF best practices badge detected)
- Scorecard Security-Policy: 0/10 (security policy file not detected)
- Scorecard Fuzzing: 10/10 (project is fuzzed)
- Scorecard License: 10/10 (license file detected)
- Scorecard Signed-Releases: 0/10 (Project has not signed or included provenance with any releases.)
- Scorecard SAST: 0/10 (SAST tool is not run on all commits -- score normalized to 0)
- aggregate
- 5
- check:Binary-Artifacts
- yes
- check:CII-Best-Practices
- no
- check:Code-Review
- yes
- check:Dangerous-Workflow
- yes
- check:Fuzzing
- yes
- check:License
- yes
- check:Maintained
- yes
- check:Pinned-Dependencies
- no
- check:SAST
- no
- check:Security-Policy
- no
- check:Signed-Releases
- no
- check:Token-Permissions
- no
Package registriesok
- checked
- 25
- declared
- 25
- lookup_errors
- 0
- missing
- 0
- recent
- 0
Secrets (gitleaks)ok
- secrets_current
- 0
- secrets_history
- 0
- secrets_low_confidence
- 0
- secrets_nonprod
- 0
Static analysis (opengrep)ok
- findings
- 11
- findings_high
- 0
- findings_low
- 11
- findings_medium
- 0
- parse_errors
- 3
- scanned_lines
- 49,936
- weighted_findings
- 2.75
Dependencies (osv-scanner)ok
- penalty
- 0
- vulnerabilities
- 0
- vulnerable_packages
- 0
- vulns_critical
- 0
- vulns_high
- 0
- vulns_low
- 0
- vulns_medium
- 0
- vulns_unknown
- 0
CI workflows (zizmor)ok
- findings
- 37
- findings_high
- 22
- findings_low
- 6
- findings_medium
- 9
- penalty
- 276.80
- workflows
- 2
Security postureok9 items
- crates/cli/Cargo.toml has no lockfile alongside it (unpinned dependencies)
crates/cli/Cargo.toml - crates/globset/Cargo.toml has no lockfile alongside it (unpinned dependencies)
crates/globset/Cargo.toml - crates/grep/Cargo.toml has no lockfile alongside it (unpinned dependencies)
crates/grep/Cargo.toml - crates/ignore/Cargo.toml has no lockfile alongside it (unpinned dependencies)
crates/ignore/Cargo.toml - crates/matcher/Cargo.toml has no lockfile alongside it (unpinned dependencies)
crates/matcher/Cargo.toml - crates/pcre2/Cargo.toml has no lockfile alongside it (unpinned dependencies)
crates/pcre2/Cargo.toml - crates/printer/Cargo.toml has no lockfile alongside it (unpinned dependencies)
crates/printer/Cargo.toml - crates/regex/Cargo.toml has no lockfile alongside it (unpinned dependencies)
crates/regex/Cargo.toml - crates/searcher/Cargo.toml has no lockfile alongside it (unpinned dependencies)
crates/searcher/Cargo.toml
- check:dependency_updates
- no
- check:lockfiles
- no
- check:security_policy
- no
- check:signed_commits
- yes
- signed_commit_share
- 50.5%
- unpinned_manifests
- 9
Release downloadsok5 items
- release 15.2.0 ships ripgrep-15.2.0-aarch64-apple-darwin.tar.gz (1760642 downloads)
- release 15.2.0 ships ripgrep-15.2.0-aarch64-pc-windows-msvc.zip (185744 downloads)
- release 15.2.0 ships ripgrep-15.2.0-aarch64-unknown-linux-gnu.tar.gz (1383705 downloads)
- release 15.2.0 ships ripgrep-15.2.0-aarch64-unknown-linux-musl.tar.gz (564390 downloads)
- release 15.2.0 ships ripgrep-15.2.0-armv7-unknown-linux-gnueabihf.tar.gz (1229 downloads)
- binary_assets
- 121
- signals
- 1
- suspicious
- 0
Findings
22 high9 medium13 low4 info
| Severity | Rule | Location | Message | Tool |
|---|---|---|---|---|
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:120 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:132 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:138 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:218 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:220 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:232 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:234 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:245 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:247 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:260 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:262 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:273 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:281 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/excessive-permissions |
.github/workflows/release.yml:11 | overly broad permissions [confidence high] | CI workflows (zizmor) |
| high | zizmor/excessive-permissions |
.github/workflows/release.yml:12 | overly broad permissions [confidence high] | CI workflows (zizmor) |
| high | zizmor/excessive-permissions |
.github/workflows/release.yml:13 | overly broad permissions [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/release.yml:142 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/release.yml:151 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/release.yml:23 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/template-injection |
.github/workflows/release.yml:26 | code injection via template expansion [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/release.yml:314 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/release.yml:322 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| medium | zizmor/artipacked |
.github/workflows/ci.yml:119 | credential persistence through GitHub Actions artifacts [confidence low] | CI workflows (zizmor) |
| medium | zizmor/artipacked |
.github/workflows/ci.yml:217 | credential persistence through GitHub Actions artifacts [confidence low] | CI workflows (zizmor) |
| medium | zizmor/artipacked |
.github/workflows/ci.yml:231 | credential persistence through GitHub Actions artifacts [confidence low] | CI workflows (zizmor) |
| medium | zizmor/artipacked |
.github/workflows/ci.yml:244 | credential persistence through GitHub Actions artifacts [confidence low] | CI workflows (zizmor) |
| medium | zizmor/artipacked |
.github/workflows/ci.yml:259 | credential persistence through GitHub Actions artifacts [confidence low] | CI workflows (zizmor) |
| medium | zizmor/artipacked |
.github/workflows/ci.yml:272 | credential persistence through GitHub Actions artifacts [confidence low] | CI workflows (zizmor) |
| medium | zizmor/artipacked |
.github/workflows/release.yml:141 | credential persistence through GitHub Actions artifacts [confidence low] | CI workflows (zizmor) |
| medium | zizmor/artipacked |
.github/workflows/release.yml:23 | credential persistence through GitHub Actions artifacts [confidence low] | CI workflows (zizmor) |
| medium | zizmor/artipacked |
.github/workflows/release.yml:313 | credential persistence through GitHub Actions artifacts [confidence low] | CI workflows (zizmor) |
| low | zizmor/template-injection |
.github/workflows/release.yml:298 | code injection via template expansion [confidence high] | CI workflows (zizmor) |
| low | zizmor/template-injection |
.github/workflows/release.yml:298 | code injection via template expansion [confidence high] | CI workflows (zizmor) |
| low | opengrep/rust.lang.security.unsafe-usage |
crates/cli/src/hostname.rs:41 | Detected 'unsafe' usage, please audit for secure usage [confidence high] | Static analysis (opengrep) |
| low | opengrep/rust.lang.security.unsafe-usage |
crates/cli/src/hostname.rs:59 | Detected 'unsafe' usage, please audit for secure usage [confidence high] | Static analysis (opengrep) |
| low | opengrep/rust.lang.security.unsafe-usage |
crates/core/flags/hiargs.rs:232 | Detected 'unsafe' usage, please audit for secure usage [confidence high] | Static analysis (opengrep) |
| low | opengrep/rust.lang.security.current-exe |
crates/core/flags/lowargs.rs:681 | current_exe should not be used for security operations. From the docs: "The output of this function should not be trusted for anything that might have security implications. Basically, if users can run the executable, they can change... | Static analysis (opengrep) |
| low | opengrep/rust.lang.security.current-exe |
crates/core/flags/lowargs.rs:690 | current_exe should not be used for security operations. From the docs: "The output of this function should not be trusted for anything that might have security implications. Basically, if users can run the executable, they can change... | Static analysis (opengrep) |
| low | opengrep/rust.lang.security.current-exe |
crates/core/flags/lowargs.rs:699 | current_exe should not be used for security operations. From the docs: "The output of this function should not be trusted for anything that might have security implications. Basically, if users can run the executable, they can change... | Static analysis (opengrep) |
| low | opengrep/rust.lang.security.args-os |
crates/core/flags/parse.rs:103 | args_os should not be used for security operations. From the docs: "The first element is traditionally the path of the executable, but it can be set to arbitrary text, and might not even exist. This means this property should not be... | Static analysis (opengrep) |
| low | opengrep/rust.lang.security.args-os |
crates/core/flags/parse.rs:72 | args_os should not be used for security operations. From the docs: "The first element is traditionally the path of the executable, but it can be set to arbitrary text, and might not even exist. This means this property should not be... | Static analysis (opengrep) |
| low | opengrep/rust.lang.security.temp-dir |
crates/ignore/benches/workloads.rs:44 | temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... | Static analysis (opengrep) |
| low | opengrep/rust.lang.security.temp-dir |
crates/ignore/src/lib.rs:529 | temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... | Static analysis (opengrep) |
| low | opengrep/rust.lang.security.unsafe-usage |
crates/searcher/src/searcher/mmap.rs:84 | Detected 'unsafe' usage, please audit for secure usage [confidence high] | Static analysis (opengrep) |
| info | zizmor/template-injection |
.github/workflows/release.yml:213 | code injection via template expansion [confidence low] | CI workflows (zizmor) |
| info | zizmor/template-injection |
.github/workflows/release.yml:297 | code injection via template expansion [confidence low] | CI workflows (zizmor) |
| info | zizmor/template-injection |
.github/workflows/release.yml:367 | code injection via template expansion [confidence low] | CI workflows (zizmor) |
| info | zizmor/template-injection |
.github/workflows/release.yml:385 | 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.
| Analyzer | Pillar | Status | Version | Findings | Note |
|---|---|---|---|---|---|
| AI tool configuration | AI provenance | ok | signatures-v1 | 0 | |
| Explicit AI attribution | AI provenance | ok | signatures-v1 | 0 | |
| Release velocity | AI provenance | ok | prov-5 | 0 | |
| Coding style | AI provenance | ok | — | 0 | |
| Commit velocity | AI provenance | ok | prov-5 | 0 | |
| Complexity (lizard) | Code quality | ok | lizard 1.25.1 | 0 | |
| Documentation | Code quality | ok | — | 0 | |
| Duplication (jscpd) | Code quality | ok | repotrust-dup-w6 | 0 | |
| Lint | Code quality | ok | opengrep 1.33.1; rules f1d2b562b414 | 0 | |
| Tests and CI | Code quality | ok | — | 0 | |
| Type safety | Code quality | skipped | — | 0 | |
| CI workflows (zizmor) | Security | ok | zizmor 1.32.0 | 37 | |
| Dependencies (osv-scanner) | Security | ok | osv-scanner version: 2.7.1 | 0 | |
| Release downloads | Security | ok | — | 0 | |
| Security posture | Security | ok | — | 0 | |
| Package registries | Security | ok | — | 0 | |
| Static analysis (opengrep) | Security | ok | opengrep 1.33.1; rules f1d2b562b414 | 11 | |
| OpenSSF Scorecard | Security | ok | scorecard v5.6.0 | 0 | |
| Secrets (gitleaks) | Security | ok | gitleaks 8.30.1 | 0 |
Score history
| Scored | Commit | Scoring | AI provenance | Quality | Security |
|---|---|---|---|---|---|
| 2026-11-14 | 178cc027e283 | prov-5+qual-2+sec-2 | 0% | 74 | 71 |
Full text report
- Repository: https://github.com/BurntSushi/ripgrep
- Commit:
178cc027e283fd965cb72d0a7395b219eada170c - Generated: 2026-11-14T15:15:29+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) | 0 | possible | 65% | 100% |
| Code quality | 74 | adequate | 90% | 100% |
| Security | 71 | adequate | 85% | 100% |
AI provenance
Weak signals consistent with AI-assisted development.
-
Explicitly attributed share (lower bound): 0.0%
-
Unattributed share in AI-consistent velocity bursts: 1.0%
-
Estimated AI-generated share: 0.0%
-
Stylometry index: 0.06 per 1,000 lines (narrated steps 3, placeholders 0, assistant phrasing 0, emoji 0). Reported as a signal, not scored.
| Month | Lines added | Attributed to AI |
|---|---|---|
| 2025-11 | 24 | 0% |
| 2025-12 | 25 | 0% |
| 2026-01 | 79 | 0% |
| 2026-02 | 14 | 0% |
| 2026-03 | 165 | 0% |
| 2026-04 | 1 | 0% |
| 2026-05 | 178 | 0% |
| 2026-06 | 652 | 0% |
| 2026-07 | 3,665 | 0% |
| 2026-08 | 14 | 0% |
| 2026-10 | 1,115 | 0% |
| 2026-11 | 37 | 0% |
Evidence
- 1,001 lines of first-party code in ~1.4h (721 lines/hour, PR #3483) (be739c791028)
- step-by-step narration comment: // First, check that the parent gitignore file isn't detected if the (crates/ignor)
- step-by-step narration comment: // Finally, add a leading slash. In the local file case, this turns (crates/print)
- step-by-step narration comment: // now we just pick one. (crates/regex)
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 adequate: test-to-source ratio 0.13, no CI test run detected; 7% of function code in complex or long functions; 11% duplicated lines. Weakest area: duplication.
| Area | Score |
|---|---|
| Complexity (lizard) | 81 |
| Duplication | 51 |
| Code smells (Opengrep) | 100 |
| Tests and CI | 58 |
| Documentation | 100 |
| Type safety | n/a |
| Process (Scorecard review/maintenance) | 75 |
- Functions: 2,192; mean complexity 2.2, 90th percentile 5; 25 complex and 4 long functions
- Duplicated lines: 11.3% of 36,158 compared
- Tests: 6,440 test lines for 49,948 source lines (ratio 0.13); CI test commands: none detected; 16% of recent source commits also change tests
- Docs missing or thin: none
Most complex functions:
- from_low_args in crates/core/flags/hiargs.rs: complexity 42, 176 lines
- parse_star in crates/globset/src/glob.rs: complexity 30, 59 lines
- matched_ignore in crates/ignore/src/dir.rs: complexity 29, 123 lines
- check in crates/regex/src/ban.rs: complexity 25, 46 lines
- finish in crates/printer/src/summary.rs: complexity 22, 56 lines
Security
Security posture is adequate: 22 high-severity workflow issues. Weakest area: ci actions.
| Area | Score |
|---|---|
| Secrets (gitleaks, tree + history) | 100 |
| Static analysis (Opengrep) | 98 |
| Vulnerable dependencies (OSV) | 100 |
| CI workflows (zizmor) | 1 |
| Posture (policy, updates, signing, lockfiles) | 20 |
| OpenSSF Scorecard | 43 |
- Posture checks passed: signed commits; missing: security policy, dependency updates, lockfiles
- OpenSSF Scorecard aggregate: 5.0/10 (published 2026-11-09)
Top findings
| Severity | Finding | Location |
|---|---|---|
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:120 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:132 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:138 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:218 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:220 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:232 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:234 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:245 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:247 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:260 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:262 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:273 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:281 |
| high | zizmor/excessive-permissions: overly broad permissions [confidence high] |
.github/workflows/release.yml:11 |
| high | zizmor/excessive-permissions: overly broad permissions [confidence high] |
.github/workflows/release.yml:12 |
| high | zizmor/excessive-permissions: overly broad permissions [confidence high] |
.github/workflows/release.yml:13 |
| high | zizmor/template-injection: code injection via template expansion [confidence high] |
.github/workflows/release.yml:26 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/release.yml:23 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/release.yml:142 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/release.yml:151 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/release.yml:314 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/release.yml:322 |
| medium | zizmor/artipacked: credential persistence through GitHub Actions artifacts [confidence low] |
.github/workflows/ci.yml:119 |
| medium | zizmor/artipacked: credential persistence through GitHub Actions artifacts [confidence low] |
.github/workflows/ci.yml:217 |
| medium | zizmor/artipacked: credential persistence through GitHub Actions artifacts [confidence low] |
.github/workflows/ci.yml:231 |
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
- binary-release-asset: release 15.2.0 ships ripgrep-15.2.0-aarch64-apple-darwin.tar.gz (1760642 downloads)
- binary-release-asset: release 15.2.0 ships ripgrep-15.2.0-aarch64-pc-windows-msvc.zip (185744 downloads)
- binary-release-asset: release 15.2.0 ships ripgrep-15.2.0-aarch64-unknown-linux-gnu.tar.gz (1383705 downloads)
- binary-release-asset: release 15.2.0 ships ripgrep-15.2.0-aarch64-unknown-linux-musl.tar.gz (564390 downloads)
- binary-release-asset: release 15.2.0 ships ripgrep-15.2.0-armv7-unknown-linux-gnueabihf.tar.gz (1229 downloads)
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: 49,948; test lines: 6,440
| Language | Lines |
|---|---|
| Rust | 55,512 |
| Shell | 841 |
| Ruby | 23 |
| Lua | 12 |