carllerche/tower-web
A fast, boilerplate free, web framework for Rust
- Repository: https://github.com/carllerche/tower-web
- Commit:
563ce5372728b5d44fd29761f9662e00ae1902cc - Generated: 2026-11-13T23:30:27+00:00
- Scorer 0.1.0, scoring prov-4+qual-2+sec-2, report schema v2
Scores
| Pillar | Score | Signal | Confidence | Coverage |
|---|---|---|---|---|
| AI provenance (estimated AI-generated share) | 0 | none-detected | 65% | 100% |
| Code quality | 66 | adequate | 90% | 100% |
| Security | 77 | adequate | 85% | 100% |
AI provenance
No AI attribution or AI-consistent velocity signals detected.
-
Explicitly attributed share (lower bound): 0.0%
-
Unattributed share in AI-consistent velocity bursts: 0.0%
-
Estimated AI-generated share: 0.0%
-
Stylometry index: 0.17 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 |
|---|---|---|
| 2018-09 | 2,638 | 0% |
| 2018-10 | 869 | 0% |
| 2018-11 | 299 | 0% |
| 2018-12 | 21 | 0% |
| 2019-01 | 285 | 0% |
| 2019-02 | 50 | 0% |
| 2019-03 | 145 | 0% |
| 2019-04 | 69 | 0% |
| 2019-05 | 603 | 0% |
| 2019-07 | 30 | 0% |
| 2019-09 | 5 | 0% |
| 2019-12 | 166 | 0% |
Evidence
- step-by-step narration comment: // Next, we must run our web service. (examples/asy)
- step-by-step narration comment: // Next, we must run our web service. (examples/hel)
- step-by-step narration comment: // First, if needed, try filling the buffer (src/util/buf)
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.11, CI runs tests; 12% of function code in complex or long functions; 28% duplicated lines. Weakest area: duplication.
| Area | Score |
|---|---|
| Complexity (lizard) | 69 |
| Duplication | 19 |
| Code smells (Opengrep) | 100 |
| Tests and CI | 70 |
| Documentation | 85 |
| Type safety | n/a |
| Process (Scorecard review/maintenance) | 50 |
- Functions: 769; mean complexity 3.0, 90th percentile 8; 14 complex and 3 long functions
- Duplicated lines: 27.6% of 11,620 compared
- Tests: 1,910 test lines for 17,924 source lines (ratio 0.11); CI test commands: go test, cargo test; 27% of recent source commits also change tests
- Docs missing or thin: contributing
Most complex functions:
- gen in util/gen-tuple.rs: complexity 27, 276 lines
- poll in src/util/tuple.rs: complexity 26, 52 lines
- into_http in src/util/tuple.rs: complexity 25, 19 lines
- poll in src/util/tuple.rs: complexity 24, 48 lines
- into_http in src/util/tuple.rs: complexity 23, 18 lines
Security
Security posture is adequate: no high-impact findings. Weakest area: posture.
| Area | Score |
|---|---|
| Secrets (gitleaks, tree + history) | 100 |
| Static analysis (Opengrep) | 99 |
| Vulnerable dependencies (OSV) | n/a |
| CI workflows (zizmor) | n/a |
| Posture (policy, updates, signing, lockfiles) | 20 |
| OpenSSF Scorecard | 33 |
- Posture checks passed: signed commits; missing: security policy, dependency updates, lockfiles
- OpenSSF Scorecard aggregate: 4.1/10 (published 2026-11-09)
Top findings
| Severity | Finding | Location |
|---|---|---|
| low | opengrep/rust.lang.security.unsafe-usage: Detected 'unsafe' usage, please audit for secure usage [confidence high] |
src/util/buf_stream/deflate.rs:106 |
| low | opengrep/rust.lang.security.unsafe-usage: Detected 'unsafe' usage, please audit for secure usage [confidence high] |
src/util/buf_stream/deflate.rs:116 |
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.
Repository profile
- Source lines: 17,924; test lines: 1,910
| Language | Lines |
|---|---|
| Rust | 19,834 |