{"id":31836294,"url":"https://github.com/leynos/whitaker","last_synced_at":"2026-04-12T21:19:57.829Z","repository":{"id":315292955,"uuid":"1058903815","full_name":"leynos/whitaker","owner":"leynos","description":"Snarky Dylint rules","archived":false,"fork":false,"pushed_at":"2026-02-25T19:35:17.000Z","size":9614,"stargazers_count":0,"open_issues_count":16,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-25T20:00:02.684Z","etag":null,"topics":["bumpyroad","codequality","complexity","dylint","linter","lints","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leynos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-09-17T17:52:26.000Z","updated_at":"2026-02-25T19:35:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"48cf2e9d-bdf7-44fd-993c-7cb776e35d92","html_url":"https://github.com/leynos/whitaker","commit_stats":null,"previous_names":["leynos/whitaker"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/leynos/whitaker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leynos%2Fwhitaker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leynos%2Fwhitaker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leynos%2Fwhitaker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leynos%2Fwhitaker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leynos","download_url":"https://codeload.github.com/leynos/whitaker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leynos%2Fwhitaker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29878284,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T23:51:21.483Z","status":"ssl_error","status_checked_at":"2026-02-26T23:50:46.793Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bumpyroad","codequality","complexity","dylint","linter","lints","rust"],"created_at":"2025-10-12T01:29:35.258Z","updated_at":"2026-04-05T21:06:21.094Z","avatar_url":"https://github.com/leynos.png","language":"Rust","readme":"# Whitaker\n\nSnarky Dylint rules for the df12 logisphere.\n\nWhitaker is a collection of opinionated\n[Dylint](https://github.com/trailofbits/dylint) lints for Rust. We care about\nreadable code, sensible module sizes, and keeping panics out of production—so\nour lints will gently (and occasionally snarkily) nudge you toward better\nhabits.\n\nIf your team has ever debated whether doc comments belong before or after\n`#[inline]`, or wondered how many branches is too many in a conditional,\nWhitaker has opinions. Strong ones.\n\n## Quick Start\n\nAdd the following to your workspace `Cargo.toml`:\n\n```toml\n[workspace.metadata.dylint]\nlibraries = [\n  { git = \"https://github.com/leynos/whitaker\", pattern = \"crates/*\" }\n]\n```\n\nThen run:\n\n```sh\ncargo dylint --all\n```\n\nFor version pinning, installation details, and configuration options, see the\n[User's Guide](docs/users-guide.md).\n\n## The Lints\n\nWhitaker currently ships eight lints, with more on the way:\n\n| Lint                          | What it does                                                                                                           |\n| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------- |\n| `function_attrs_follow_docs`  | Insists that doc comments come before other attributes. The docs are the star of the show—they go first.               |\n| `bumpy_road_function`         | Flags functions with multiple separate clusters of nested conditional complexity.                                      |\n| `no_expect_outside_tests`     | Bans `.expect()` on `Option` and `Result` outside test contexts. Production code deserves proper error handling.       |\n| `module_must_have_inner_docs` | Requires every module to open with an inner doc comment (`//!`). Future you will thank present you.                    |\n| `module_max_lines`            | Caps modules at 400 lines by default. Encourages you to decompose or extract before things get unwieldy.               |\n| `conditional_max_n_branches`  | Flags conditionals with more than 2 branches in a single predicate. Complex boolean logic deserves its own home.       |\n| `test_must_not_have_example`  | Flags test docs containing example headings or fenced code blocks. Test docs should describe intent, not tutorials.    |\n| `no_unwrap_or_else_panic`     | Catches sneaky panics hidden inside `unwrap_or_else` closures. If you're going to panic, at least be upfront about it. |\n| `no_std_fs_operations`        | Forbids `std::fs` operations, nudging you toward capability-based filesystem access via `cap_std`.                     |\n\n## Features\n\n- **Localised diagnostics** — Messages available in English, Welsh (Cymraeg),\n  and Scottish Gaelic (Gàidhlig). Set your preference via `DYLINT_LOCALE` or\n  `dylint.toml`.\n- **Configurable thresholds** — Adjust limits like `module_max_lines.max_lines`\n  to match your team's standards.\n- **Modular design** — Use individual lints or load the whole suite.\n\n## Project Status\n\nWhitaker is under active development. One additional lint\n(`public_fn_must_have_docs`) is planned—see the [roadmap](docs/roadmap.md) for\ndetails.\n\n## Verifying Release Checksums\n\nEach Whitaker release includes SHA-256 checksum files alongside the archive\ndownloads. You can verify the integrity of downloaded archives using standard\ncommand-line tools.\n\n### Linux\n\nUsing GNU coreutils `sha256sum`:\n\n```sh\nsha256sum -c whitaker-\u003cVERSION\u003e-x86_64-unknown-linux-gnu.tgz.sha256\n```\n\nOr compute and compare manually:\n\n```sh\nsha256sum whitaker-\u003cVERSION\u003e-x86_64-unknown-linux-gnu.tgz\ncat whitaker-\u003cVERSION\u003e-x86_64-unknown-linux-gnu.tgz.sha256\n```\n\n### macOS\n\nUsing `shasum` (included with macOS):\n\n```sh\nshasum -a 256 -c whitaker-\u003cVERSION\u003e-x86_64-apple-darwin.tgz.sha256\n```\n\nOr compute and compare manually:\n\n```sh\nshasum -a 256 whitaker-\u003cVERSION\u003e-x86_64-apple-darwin.tgz\ncat whitaker-\u003cVERSION\u003e-x86_64-apple-darwin.tgz.sha256\n```\n\n### Windows\n\nUsing PowerShell (compares against the `.sha256` sidecar file):\n\n```powershell\n$expected = (Get-Content whitaker-\u003cVERSION\u003e-x86_64-pc-windows-msvc.zip.sha256).Split()[0]\n$actual = (Get-FileHash -Algorithm SHA256 -Path whitaker-\u003cVERSION\u003e-x86_64-pc-windows-msvc.zip).Hash\nif ($actual -eq $expected) { Write-Output \"OK\" } else { Write-Output \"FAILED\" }\n```\n\nOr using `CertUtil` (Command Prompt) — compare the printed hash to the one in\nthe `.sha256` file:\n\n```cmd\ncertutil -hashfile whitaker-\u003cVERSION\u003e-x86_64-pc-windows-msvc.zip SHA256\ntype whitaker-\u003cVERSION\u003e-x86_64-pc-windows-msvc.zip.sha256\n```\n\n## Documentation\n\n- [User's Guide](docs/users-guide.md) — Installation, configuration, and\n  per-lint documentation\n- [Design Document](docs/whitaker-dylint-suite-design.md) — Architecture and\n  implementation details\n- [Roadmap](docs/roadmap.md) — Development phases and progress\n\n## Licence\n\nWhitaker is released under the [ISC Licence](LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleynos%2Fwhitaker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleynos%2Fwhitaker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleynos%2Fwhitaker/lists"}