{"id":19834437,"url":"https://github.com/guardrail-dev/guardrail-scalafix-rules","last_synced_at":"2025-07-26T16:35:48.258Z","repository":{"id":52594904,"uuid":"254549187","full_name":"guardrail-dev/guardrail-scalafix-rules","owner":"guardrail-dev","description":"Some scalafix rules to help do automated refactor work in guardrail repo(s)","archived":false,"fork":false,"pushed_at":"2023-10-10T23:15:03.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-19T19:15:17.424Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guardrail-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-04-10T05:11:35.000Z","updated_at":"2022-05-22T20:18:16.000Z","dependencies_parsed_at":"2025-06-02T21:04:15.199Z","dependency_job_id":"bac926cd-72ca-476d-b77a-0e4942dd7c49","html_url":"https://github.com/guardrail-dev/guardrail-scalafix-rules","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/guardrail-dev/guardrail-scalafix-rules","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrail-dev%2Fguardrail-scalafix-rules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrail-dev%2Fguardrail-scalafix-rules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrail-dev%2Fguardrail-scalafix-rules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrail-dev%2Fguardrail-scalafix-rules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guardrail-dev","download_url":"https://codeload.github.com/guardrail-dev/guardrail-scalafix-rules/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrail-dev%2Fguardrail-scalafix-rules/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261771193,"owners_count":23207223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-12T12:04:45.573Z","updated_at":"2025-06-24T23:10:54.685Z","avatar_url":"https://github.com/guardrail-dev.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"scalafix rules to automate work done in guardrail\n===\n\nAvailable rules\n---\n\n| Name                        | Description                                                                   |\n| --------------------------- | ----------------------------------------------------------------------------- |\n| GuardrailInterpreter2TF     | Given an object definition with an `def apply[A](term: F[A]): G[A] = term match { case Foo(a, b) =\u003e ...; ... }` as well as a number of `def foo(a: A, b: B): F[C] = ???` stubs, apply a set of heuristics to migrate the interpreter bodies from `~\u003e` to the associated Tagless Final method stubs.\u003cbr /\u003eThis only rewrites functions that have `???` as the body and that have terms that very closely match the stub method names (at the time of writing, only the first letter of the method is lower-cased. If the method is not found, it does nothing for that term). |\n| GuardrailInterface2TF       | Given a `Free[F, A]` with an implicit `InjectK`, presume quite a bit about the structure of the `Free` interpreter and transform them to the equivalent Tagless Final encoding |\n| GuardrailScalaResponseTypes | Given some source tree that looks to follow the guardrail-generated `def foo(respond: FooResource.fooResponse.type)(...): FooResource.fooResponse` style, rewrite the `fooResponse` type to be `FooResponse`, reflecting a change in term case normalization in guardrail |\n| GuardrailIterableToVector   | Given some source tree that looks to follow the guardrail-generated `def foo(respond: ...)(bar: Iterable[String])` style, rewrite parameters that use `Iterable` as the `array` type to `Vector`, reflecting the change in [#1407](https://github.com/guardrail-dev/guardrail/pull/1407) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguardrail-dev%2Fguardrail-scalafix-rules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguardrail-dev%2Fguardrail-scalafix-rules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguardrail-dev%2Fguardrail-scalafix-rules/lists"}