{"id":15011002,"url":"https://github.com/leotaku/elisp-check","last_synced_at":"2025-10-08T23:36:09.924Z","repository":{"id":42076911,"uuid":"271855514","full_name":"leotaku/elisp-check","owner":"leotaku","description":"A GitHub Action for Emacs Lisp CI","archived":false,"fork":false,"pushed_at":"2025-09-27T19:27:02.000Z","size":761,"stargazers_count":81,"open_issues_count":2,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-09-27T21:15:34.412Z","etag":null,"topics":["emacs","emacs-lisp","github-actions","linting","testing"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leotaku.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":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-06-12T17:34:04.000Z","updated_at":"2025-09-27T19:24:01.000Z","dependencies_parsed_at":"2024-04-27T00:32:46.593Z","dependency_job_id":"8b09f8bd-c4a2-4ac6-b6ce-25e42ce37c25","html_url":"https://github.com/leotaku/elisp-check","commit_stats":{"total_commits":162,"total_committers":4,"mean_commits":40.5,"dds":"0.14197530864197527","last_synced_commit":"bf28e74846f959c91caff6ded69cc8047566f7ba"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":"actions/javascript-action","purl":"pkg:github/leotaku/elisp-check","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leotaku%2Felisp-check","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leotaku%2Felisp-check/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leotaku%2Felisp-check/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leotaku%2Felisp-check/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leotaku","download_url":"https://codeload.github.com/leotaku/elisp-check/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leotaku%2Felisp-check/sbom","scorecard":{"id":585320,"data":{"date":"2025-08-18","repo":{"name":"github.com/leotaku/elisp-check","commit":"cbcda75256a9195b5e6d7e6fa39390b32e08a4f3"},"scorecard":{"version":"v5.2.1-41-g40576783","commit":"40576783fda6698350fcbbeaea760ff827433034"},"score":3.2,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":8,"reason":"binaries present in source code","details":["Warn: binary detected: node_modules/undici/lib/llhttp/llhttp.wasm:1","Warn: binary detected: node_modules/undici/lib/llhttp/llhttp_simd.wasm:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 1/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/leotaku/elisp-check/test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/leotaku/elisp-check/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/leotaku/elisp-check/test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:83: update your workflow using https://app.stepsecurity.io/secureworkflow/leotaku/elisp-check/test.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-cxrh-j4jr-qwg3"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 5 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T20:20:05.541Z","repository_id":42076911,"created_at":"2025-08-20T20:20:05.541Z","updated_at":"2025-08-20T20:20:05.541Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000734,"owners_count":26082862,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["emacs","emacs-lisp","github-actions","linting","testing"],"created_at":"2024-09-24T19:38:22.256Z","updated_at":"2025-10-08T23:36:09.919Z","avatar_url":"https://github.com/leotaku.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A GitHub Action for Emacs Lisp CI 📜\n\n[![GitHub License](https://img.shields.io/github/license/leotaku/elisp-check?color=blueviolet\u0026logo=spdx\u0026logoColor=white\u0026style=flat-square)](https://spdx.org/licenses/GPL-3.0-or-later.html)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/leotaku/elisp-check/test.yml?branch=master\u0026logo\u0026style=flat-square)](https://github.com/leotaku/elisp-check/actions)\n[![GitHub Release](https://img.shields.io/github/v/release/leotaku/elisp-check?include_prereleases\u0026sort=semver\u0026style=flat-square)](https://github.com/leotaku/elisp-check/releases)\n\nProvides a zero-config CI solution for Emacs Lisp packages.\n\nMost Emacs packages currently use either no or an ad-hoc script based CI setup.\nThis GitHub Action aims to change that.\n\nAdding this Action to your Emacs package repository immediately provides you with a default suite of code style checks that are required to get your package accepted into MELPA.\nUsing only one additional line of YAML, you can also run your ERT tests on GitHub Actions.\n\nSee the [Actions tab](https://github.com/leotaku/elisp-check-action/actions) for runs of this Action! 🚀\n\nSee the [COMPARISON.md](/COMPARISON.md) file for a more thorough comparison with other solutions for Emacs Lisp CI. 🛒\n\n### Supported Checks\n\n* [melpa](https://github.com/melpa/melpa/blob/master/CONTRIBUTING.org) :: Most checks required for MELPA \u003csup\u003e(load-file, byte-compile, checkdoc, package-lint)\u003c/sup\u003e\n* [load-file](https://www.gnu.org/software/emacs/manual/html_node/eintr/Loading-Files.html) :: Load files into Emacs\n* [byte-compile](https://www.gnu.org/software/emacs/manual/html_node/elisp/Byte-Compilation.html) :: Byte-compile files\n* [checkdoc](https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html#Documentation-Tips) :: Check documentation style\n* [package-lint](https://github.com/purcell/package-lint) :: Check coding practices\n* [ert](https://www.gnu.org/software/emacs/manual/html_node/ert/index.html) :: Run ERT tests\n\n### Features\n\n* Require zero configuration for great results\n* Support accepted Emacs Lisp coding standards and test frameworks\n* Expose helpful code annotations\n* Support running checks on your local machine (`elisp-check-run`)\n* Support older Emacs versions (24.4 and up, 24.1 and up without package-lint)\n\n### Non-Features\n\n* Support esoteric practices not accepted by MELPA\n* Define or use opinionated style checks\n\n## Usage\n\n### Linting\n\n``` yaml\nuses: leotaku/elisp-check@master\nwith:\n  file: main-file.el\n```\n\n### Tests\n\n``` yaml\nuses: leotaku/elisp-check@master\nwith:\n  check: ert\n  file: test-file.el\n```\n\nNote that this Action does not install a suitable `emacs` executable by itself.\nFor this purpose, I recommend using Steve Purcell's excellent [setup-emacs](https://github.com/purcell/setup-emacs/blob/master/README.md) GitHub Action.\n\nFor an example of real-life usage, see the [Actions config for my `theist-mode` package](https://github.com/leotaku/theist-mode/blob/master/.github/workflows/check.yml).\n\n## Advanced usage\n\n``` yaml\nuses: leotaku/elisp-check@master\nwith:\n  check: melpa\n  file: '[!.]*.el'\n  ignore_warnings: false\n  warnings_as_errors: false\n```\n\nThe above yaml code block shows the default configuration values for this GitHub Action.\n\n| Name                 | Description                         | Type                                 |\n|----------------------|-------------------------------------|--------------------------------------|\n| `check`              | Emacs Lisp check to execute         | [Supported check](#supported-checks) |\n| `file`               | Entry file for Emacs Lisp check     | File with globbing                   |\n| `ignore_warnings`    | Whether to ignore warnings          | Boolean                              |\n| `warnings_as_errors` | Whether to treat warnings as errors | Boolean                              |\n\nUsers are encouraged to make use of [GitHub Actions matrix feature](https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstrategy) to run different checks, check different entry files and test compatibility with different versions of Emacs.\n\n### Running checks locally\n\nIt is entirely possible to use your preferred Emacs package manager, or simply `load-file`, to load `elisp-check.el` into your local Emacs instance.\nThe function `elisp-check-run` may then be used to run any supported check locally.\nErrors and warnings are emitted to the Emacs `*Messages*` buffer, so both batch and interactive usage is supported.\n\n---\n\nThis project and its documentation were heavily inspired by and at times derive from [Steve Purcell's](https://github.com/purcell) work.\n\nIf possible, please support him and his efforts.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleotaku%2Felisp-check","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleotaku%2Felisp-check","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleotaku%2Felisp-check/lists"}