{"id":23642546,"url":"https://github.com/sogaiu/a-tsclj-checker","last_synced_at":"2025-08-31T19:30:37.288Z","repository":{"id":38326696,"uuid":"248919758","full_name":"sogaiu/a-tsclj-checker","owner":"sogaiu","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-10T23:32:17.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-03-06T18:39:05.756Z","etag":null,"topics":["clojure","testing","tree-sitter"],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/sogaiu.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}},"created_at":"2020-03-21T06:26:59.000Z","updated_at":"2023-02-07T08:45:11.000Z","dependencies_parsed_at":"2023-02-08T20:35:11.942Z","dependency_job_id":null,"html_url":"https://github.com/sogaiu/a-tsclj-checker","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sogaiu%2Fa-tsclj-checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sogaiu%2Fa-tsclj-checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sogaiu%2Fa-tsclj-checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sogaiu%2Fa-tsclj-checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sogaiu","download_url":"https://codeload.github.com/sogaiu/a-tsclj-checker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231615472,"owners_count":18400983,"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":["clojure","testing","tree-sitter"],"created_at":"2024-12-28T10:51:25.062Z","updated_at":"2024-12-28T10:51:25.664Z","avatar_url":"https://github.com/sogaiu.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# a-tsclj-checker\n\nParse .clj[cs]* files on the filesystem or within .jar files using tree-sitter-clojure, _looking for errors_.\n\nNote that \"error\" here refers specifically to something tree-sitter concludes is an error based on its use of tree-sitter-clojure.\n\nThis project is based on borkdude's [analyze-reify](https://github.com/borkdude/analyze-reify).\n\n## Rationale\n\nModifying tree-sitter-clojure's grammar has sometimes lead to unexpected breakage.  Testing using a variety of means is employed in order to have some degree of confidence that the grammar behaves reasonably after a change.  This project is used in the approach of testing across a collection of real-world code.\n\nOriginally, tree-sitter cli's parse subcommand was used for this purpose.  Although it can handle multiple paths for specific files, perhaps unsurprisingly, it does not handle parsing files stored within .jar files.  In the Clojure world, .clj[cs]* files often live inside .jar files.  This tool should make it a bit easier to _identify errors_ in the relevant content within .jar files without having to perform an explicit extraction.\n\nAdditionally, this tool can handle recursively traversing directories to process relevant files.\n\n## Prerequisites\n\n* rust\n\n## Build\n\nClone the repository with its submodule:\n\n```\n$ git clone https://github.com/sogaiu/a-tsclj-checker --recursive\n$ cd a-tsclj-checker\n```\n\nBuild with the Rust build tool `cargo`:\n\n```\n$ cargo build --release\n```\n\nor install the tool locally:\n\n```\n$ cargo install --path .\n```\n\nThe binary is named `a-tsclj-checker`.\n\n## Usage\n\nProvide one or multiple paths (files, directories or .jar files):\n\n```\n$ a-tsclj-checker /tmp/clojars\n/tmp/clojars/clj-mma/clj-mma/0.1.0/clj-mma-0.1.0.jar/mma/conversion.clj\n/tmp/clojars/clj-mma/clj-mma/0.1.0/clj-mma-0.1.0.jar/mma/dictionary.clj\n/tmp/clojars/clj-mma/clj-mma/0.1.0/clj-mma-0.1.0.jar/primes.clj\n/tmp/clojars/ds-utils/ds-utils/0.3.1/ds-utils-0.3.1.jar/ds_utils/locality_sensitive_hashing.clj\n/tmp/clojars/coast/coast/0.6.9/coast-0.6.9.jar/controller.clj\n/tmp/clojars/coast/coast/0.6.9/coast-0.6.9.jar/model.clj\n...\nProcessed 148373 files in 12426ms. 😎\n\n```\n\n## Thanks\n\nThanks to borkdude for analyze-reify, discussions, and more :)\n\n## License\n\nSee analyze-reify.LICENSE for analyze-reify's license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsogaiu%2Fa-tsclj-checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsogaiu%2Fa-tsclj-checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsogaiu%2Fa-tsclj-checker/lists"}