{"id":13498667,"url":"https://github.com/editorconfig-checker/editorconfig-checker","last_synced_at":"2025-10-21T04:58:22.614Z","repository":{"id":40591398,"uuid":"104879779","full_name":"editorconfig-checker/editorconfig-checker","owner":"editorconfig-checker","description":"A tool to verify that your files are in harmony with your .editorconfig","archived":false,"fork":false,"pushed_at":"2025-10-17T08:06:24.000Z","size":1241,"stargazers_count":558,"open_issues_count":48,"forks_count":60,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-10-21T04:57:48.574Z","etag":null,"topics":["clean-code","cleancode","code-quality","codequality","editorconfig","editorconfig-checker","hacktoberfest","lint","lintcode","linter","linters","linting"],"latest_commit_sha":null,"homepage":"https://editorconfig-checker.github.io/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/editorconfig-checker.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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,"notice":null,"maintainers":"MAINTAINERS.md","copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-09-26T12:07:57.000Z","updated_at":"2025-10-16T09:40:40.000Z","dependencies_parsed_at":"2022-07-11T22:17:11.708Z","dependency_job_id":"4e6d6ab9-3bb7-49b7-b134-c8fa5228eabe","html_url":"https://github.com/editorconfig-checker/editorconfig-checker","commit_stats":{"total_commits":416,"total_committers":38,"mean_commits":"10.947368421052632","dds":0.3485576923076923,"last_synced_commit":"a4452298f92832a50d77e3aa3703dcbe46021dca"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/editorconfig-checker/editorconfig-checker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/editorconfig-checker%2Feditorconfig-checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/editorconfig-checker%2Feditorconfig-checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/editorconfig-checker%2Feditorconfig-checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/editorconfig-checker%2Feditorconfig-checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/editorconfig-checker","download_url":"https://codeload.github.com/editorconfig-checker/editorconfig-checker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/editorconfig-checker%2Feditorconfig-checker/sbom","scorecard":{"id":366758,"data":{"date":"2025-08-11","repo":{"name":"github.com/editorconfig-checker/editorconfig-checker","commit":"ba3ea5065e877d913a2bf4d6bd6a3d73699aa284"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.5,"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":10,"reason":"11 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/dependabot-automerge.yml:5","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release-please.yml:7","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:11","Warn: topLevel 'packages' permission set to 'write': .github/workflows/release.yml:12","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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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/ci.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dependabot-automerge.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/dependabot-automerge.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-please.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/release-please.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/editorconfig-checker/editorconfig-checker/release.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:5: pin your Docker image by updating alpine:latest to alpine:latest@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  11 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:16"],"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.4.0 not signed: https://api.github.com/repos/editorconfig-checker/editorconfig-checker/releases/238992414","Warn: release artifact v3.3.0 not signed: https://api.github.com/repos/editorconfig-checker/editorconfig-checker/releases/216940909","Warn: release artifact v3.2.1 not signed: https://api.github.com/repos/editorconfig-checker/editorconfig-checker/releases/206042016","Warn: release artifact v3.2.0 not signed: https://api.github.com/repos/editorconfig-checker/editorconfig-checker/releases/197008097","Warn: release artifact v3.1.2 not signed: https://api.github.com/repos/editorconfig-checker/editorconfig-checker/releases/194199052","Warn: release artifact v3.4.0 does not have provenance: https://api.github.com/repos/editorconfig-checker/editorconfig-checker/releases/238992414","Warn: release artifact v3.3.0 does not have provenance: https://api.github.com/repos/editorconfig-checker/editorconfig-checker/releases/216940909","Warn: release artifact v3.2.1 does not have provenance: https://api.github.com/repos/editorconfig-checker/editorconfig-checker/releases/206042016","Warn: release artifact v3.2.0 does not have provenance: https://api.github.com/repos/editorconfig-checker/editorconfig-checker/releases/197008097","Warn: release artifact v3.1.2 does not have provenance: https://api.github.com/repos/editorconfig-checker/editorconfig-checker/releases/194199052"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T11:59:22.603Z","repository_id":40591398,"created_at":"2025-08-18T11:59:22.603Z","updated_at":"2025-08-18T11:59:22.603Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280207218,"owners_count":26290616,"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-21T02:00:06.614Z","response_time":58,"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":["clean-code","cleancode","code-quality","codequality","editorconfig","editorconfig-checker","hacktoberfest","lint","lintcode","linter","linters","linting"],"created_at":"2024-07-31T21:00:40.576Z","updated_at":"2025-10-21T04:58:22.608Z","avatar_url":"https://github.com/editorconfig-checker.png","language":"Go","funding_links":["https://www.buymeacoffee.com/mstruebing"],"categories":["Supported Linters","Go"],"sub_categories":[],"readme":"# editorconfig-checker\n\n\u003ca href=\"https://www.buymeacoffee.com/mstruebing\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n\n[![ci](https://github.com/editorconfig-checker/editorconfig-checker/actions/workflows/ci.yml/badge.svg)](https://github.com/editorconfig-checker/editorconfig-checker/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/editorconfig-checker/editorconfig-checker/branch/main/graph/badge.svg)](https://codecov.io/gh/editorconfig-checker/editorconfig-checker)\n[![Hits-of-Code](https://hitsofcode.com/github/editorconfig-checker/editorconfig-checker?branch=main\u0026label=Hits-of-Code)](https://hitsofcode.com/github/editorconfig-checker/editorconfig-checker/view?branch=main\u0026label=Hits-of-Code)\n[![Go Report Card](https://goreportcard.com/badge/github.com/editorconfig-checker/editorconfig-checker/v3)](https://goreportcard.com/report/github.com/editorconfig-checker/editorconfig-checker/v3)\u003c!-- x-release-please-major --\u003e\n\n![Logo](docs/logo.png)\n\n1. [What?](#what)\n2. [Quickstart](#quickstart)\n3. [Installation](#installation)\n4. [Usage](#usage)\n5. [Configuration](#configuration)\n6. [Excluding](#excluding)\n   1. [Excluding Lines](#excluding-lines)\n   2. [Excluding Blocks](#excluding-blocks)\n   3. [Excluding Paths](#excluding-paths)\n      1. [Inline](#inline)\n      2. [Default Excludes](#default-excludes)\n      3. [Ignoring Default Excludes](#ignoring-default-excludes)\n      4. [Manually Excluding](#manually-excluding)\n         1. [via configuration](#via-configuration)\n         2. [via arguments](#via-arguments)\n7. [Docker](#docker)\n8. [Continuous Integration](#continuous-integration)\n9. [Support](#support)\n10. [Contributing](#contributing)\n11. [Semantic Versioning Policy](#semantic-versioning-policy)\n\n## What?\n\n![Example Screenshot](docs/screenshot.png)\n\nThis is a tool to check if your files consider your `.editorconfig` rules.\nMost tools—like linters, for example—only test one filetype and need an extra configuration.\nThis tool only needs your `.editorconfig` to check all files.\n\nIf you don't know about editorconfig already you can read about it here: [editorconfig.org](https://editorconfig.org/).\n\nCurrently, implemented editorconfig features are:\n\n- `end_of_line`\n- `insert_final_newline`\n- `trim_trailing_whitespace`\n- `indent_style`\n- `indent_size`\n- `max_line_length`\n\nUnsupported features are:\n\n- `charset`\n\n## Quickstart\n\n\u003c!-- x-release-please-start-version --\u003e\n```shell\nVERSION=\"v3.4.1\"\nOS=\"linux\"\nARCH=\"amd64\"\ncurl -O -L -C - https://github.com/editorconfig-checker/editorconfig-checker/releases/download/$VERSION/ec-$OS-$ARCH.tar.gz \u0026\u0026 \\\ntar xzf ec-$OS-$ARCH.tar.gz \u0026\u0026 \\\n./bin/ec-$OS-$ARCH\n```\n\u003c!-- x-release-please-end --\u003e\n\n## Installation\n\nGrab a binary from the [release page](https://github.com/editorconfig-checker/editorconfig-checker/releases).\n\nIf you have go installed you can run `go get github.com/editorconfig-checker/editorconfig-checker/v3` \u003c!-- x-release-please-major --\u003e\nand run `make build` inside the project folder.\nThis will place a binary called `ec` into the `bin` directory.\n\nIf you are using Arch Linux, you can use [pacman](https://wiki.archlinux.org/title/Pacman) to install from [extra repository](https://archlinux.org/packages/extra/x86_64/editorconfig-checker/):\n\n```shell\npacman -S editorconfig-checker\n```\n\nAlso, development (VCS) package is available in the [AUR](https://aur.archlinux.org/packages/editorconfig-checker-git):\n\n```shell\n# \u003cfavourite-aur-helper\u003e \u003cinstall-command\u003e editorconfig-checker-git\n\n# i.e.\nparu -S editorconfig-checker-git\n```\n\nIf Go 1.16 or greater is installed, you can also install it globally via `go install`:\n\n```shell\ngo install github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker@latest\n```\n\n## Usage\n\n```txt\nUSAGE:\n  -config string\n        config\n  -debug\n        print debugging information\n  -disable-end-of-line\n        disables the trailing whitespace check\n  -disable-indent-size\n        disables only the indent-size check\n  -disable-indentation\n        disables the indentation check\n  -disable-insert-final-newline\n        disables the final newline check\n  -disable-trim-trailing-whitespace\n        disables the trailing whitespace check\n  -dry-run\n        show which files would be checked\n  -exclude string\n        a regex which files should be excluded from checking - needs to be a valid regular expression\n  -format\n        specifies the output format, see \"Formats\" below for more information\n  -h    print the help\n  -help\n        print the help\n  -ignore-defaults\n        ignore default excludes\n  -init\n        creates an initial configuration\n  -no-color\n        disables printing color\n  -color\n        enables printing color\n  -v    print debugging information\n  -verbose\n        print debugging information\n  -version\n        print the version number\n```\n\nIf you run this tool from a repository root it will check all files which are added to the git repository and are text files. If the tool isn't able to determine a file type it will be added to be checked too.\n\nIf you run this tool from a normal directory it will check all files which are text files. If the tool isn't able to determine a file type it will be added to be checked too.\n\n### Formats\n\nThe following output formats are supported:\n\n- **default**: Plain text, human readable output.\u003cbr/\u003e\n  ```text\n  \u003cfile\u003e:\n    \u003cstartingLine\u003e-\u003cendLine\u003e: \u003cmessage\u003e\n  ```\n- **gcc**: GCC compatible output. Useful for editors that support compiling and showing syntax errors. \u003cbr/\u003e\n  `\u003cfile\u003e:\u003cline\u003e:\u003ccolumn\u003e: \u003ctype\u003e: \u003cmessage\u003e`\n- **github-actions**: The format used by GitHub Actions \u003cbr/\u003e\n  `::error file=\u003cfile\u003e,line=\u003cstartingLine\u003e,endLine=\u003cendingLine\u003e::\u003cmessage\u003e`\n- **codeclimate**: The [Code Climate](https://github.com/codeclimate/platform/blob/master/spec/analyzers/SPEC.md#data-types) json format used for [custom quality reports](https://docs.gitlab.com/ee/ci/testing/code_quality.html#implement-a-custom-tool) in GitLab CI\n  ```json\n  [\n    {\n      \"check_name\": \"editorconfig-checker\",\n      \"description\": \"Wrong indent style found (tabs instead of spaces)\",\n      \"fingerprint\": \"e87a958a3960d60a11d4b49c563cccd2\",\n      \"severity\": \"minor\",\n      \"location\": {\n        \"path\": \".vscode/extensions.json\",\n        \"lines\": {\n          \"begin\": 2,\n          \"end\": 2\n        }\n      }\n    }\n  ]\n  ```\n\n## Configuration\n\nThe configuration is done via arguments or it will take the first config file found with the following file names:\n\n- `.editorconfig-checker.json`\n- `.ecrc` (deprecated filename, soon unsupported)\n\nA sample configuration file can look like this and will be used from your current working directory if not specified via the `--config` argument:\n\n```json\n{\n  \"Verbose\": false,\n  \"Debug\": false,\n  \"IgnoreDefaults\": false,\n  \"SpacesAfterTabs\": false,\n  \"NoColor\": false,\n  \"Exclude\": [],\n  \"AllowedContentTypes\": [],\n  \"PassedFiles\": [],\n  \"Disable\": {\n    \"EndOfLine\": false,\n    \"Indentation\": false,\n    \"IndentSize\": false,\n    \"InsertFinalNewline\": false,\n    \"TrimTrailingWhitespace\": false,\n    \"MaxLineLength\": false\n  }\n}\n```\n\nYou can set any of the options under the `\"Disable\"` section to `true` to disable those particular checks.\n\nYou could also specify command line arguments, and they will get merged with the configuration file. The command line arguments have a higher precedence than the configuration.\n\nYou can create a configuration with the `init`-flag. If you specify a `config`-path it will be created there.\n\nBy default, the allowed_content_types are:\n\n1. `text/` (matches `text/plain`, `text/html`, etc.)\n1. `application/ecmascript`\n1. `application/json`\n1. `application/x-ndjson`\n1. `application/xml`\n1. `+json` (matches `application/geo+json`, etc.)\n1. `+xml` (matches `application/rss+xml`, etc.)\n1. `application/octet-stream`\n\n`application/octet-stream` is needed as a fallback when no content type could be determined. You can add additional accepted content types with the `allowed_content_types` key. But the default ones don't get removed.\n\n## Excluding\n\n### Excluding Lines\n\nYou can exclude single lines inline. To do that you need a comment on that line that says: `editorconfig-checker-disable-line`.\n\n```javascript\nconst myTemplateString = `\n  first line\n     wrongly indented line because it needs to be` // editorconfig-checker-disable-line\n```\n\nAlternatively, you can use `editorconfig-checker-disable-next-line` to skip the line that comes after this comment.\nThis modifier is present to improve readability, or because your sometimes have no other choice because of your own/language constraints.\n\n```javascript\n// editorconfig-checker-disable-next-line used because blah blah blah what ever the reason blah\nconst myTemplateString = `a line that is (...) longer (...) than ... usual` // or with a very long inline comment\n```\n\nPlease note that using `editorconfig-checker-disable-next-line` has only an effect on the next line, so it will report if the line where you added the modifier doesn't comply.\n\n### Excluding Blocks\n\nTo temporarily disable all checks, add a comment containing `editorconfig-checker-disable`. Re-enable with a comment containing `editorconfig-checker-enable`\n\n```javascript\n// editorconfig-checker-disable\nconst myTemplateString = `\n  first line\n     wrongly indented line because it needs to be\n`\n// editorconfig-checker-enable\n```\n\n### Excluding Paths\n\nYou can exclude paths from being checked in several ways:\n\n- ignoring a file by documenting it inside the to-be-excluded file\n- adding a regex matching the path to the [configuration file](#configuration)\n- passing a regex matching the path as argument to `--exclude`\n\nAll these excludes are used in addition to the [default excludes](#default-excludes), unless you [opt out of them](#ignoring-default-excludes).\n\nIf you want to see which files would be checked without checking them you can pass the `--dry-run` flag.\n\nNote that while `--dry-run` might output absolute paths, the regular expression you write must match the filenames using relative paths from where editorconfig-checker is used. This becomes especially relevant if you need to anchor your regular expression in order to only match files in the top level your checked directory.\n\nAdditionally, paths will be normalized to Unix style before matching against the regex list happens. As a result you don't have to write `[\\\\/]` to account for Windows and Unix path styles but can just use `/` instead.\n\n#### Inline\n\nIf you want to exclude a file inline you need a comment on the first line of the file that contains: `editorconfig-checker-disable-file`\n\n```haskell\n-- editorconfig-checker-disable-file\nadd :: Int -\u003e Int -\u003e Int\nadd x y =\n  let result = x + y -- falsy indentation would not report\n  in result -- falsy indentation would not report\n```\n\n#### Default Excludes\n\nIf you choose to [ignore them](#ignoring-default-excludes), these paths are excluded automatically:\n\n```txt\n// source control related files and folders\n\"\\\\.git/\",\n\"\\\\.jj/\",\n// package manager, generated, \u0026 lock files\n// Cargo (Rust)\n\"Cargo\\\\.lock$\",\n// Composer (PHP)\n\"composer\\\\.lock$\",\n// RubyGems (Ruby)\n\"Gemfile\\\\.lock$\",\n// Go Modules (Go)\n\"go\\\\.(mod|sum|work|work\\\\.sum)$\",\n// Gradle (Java)\n\"gradle/wrapper/gradle-wrapper\\\\.properties$\",\n\"gradlew(\\\\.bat)?$\",\n\"(buildscript-)?gradle\\\\.lockfile?$\",\n// Maven (Java)\n\"\\\\.mvn/wrapper/maven-wrapper\\\\.properties$\",\n\"\\\\.mvn/wrapper/MavenWrapperDownloader\\\\.java$\",\n\"mvnw(\\\\.cmd)?$\",\n// NodeJS\n\"/node_modules/\",\n// npm (NodeJS)\n\"npm-shrinkwrap\\\\.json$\",\n\"package-lock\\\\.json$\",\n// pip (Python)\n\"Pipfile\\\\.lock$\",\n// Poetry (Python)\n\"poetry\\\\.lock$\",\n// pnpm (NodeJS)\n\"pnpm-lock\\\\.yaml$\",\n// Terraform \u0026 OpenTofu\n\"\\\\.terraform\\\\.lock\\\\.hcl$\",\n// uv (Python)\n\"uv\\\\.lock$\",\n// yarn (NodeJS)\n\"\\\\.pnp\\\\.c?js$\",\n\"\\\\.pnp\\\\.loader\\\\.mjs$\",\n\"\\\\.yarn/\",\n\"yarn\\\\.lock$\",\n// font files\n\"\\\\.eot$\",\n\"\\\\.otf$\",\n\"\\\\.ttf$\",\n\"\\\\.woff2?$\",\n// image \u0026 video formats\n\"\\\\.avif$\",\n\"\\\\.gif$\",\n\"\\\\.ico$\",\n\"\\\\.jpe?g$\",\n\"\\\\.mp4$\",\n\"\\\\.p[bgnp]m$\",\n\"\\\\.png$\",\n\"\\\\.svg$\",\n\"\\\\.tiff?$\",\n\"\\\\.webp$\",\n\"\\\\.wmv$\",\n// other binary or container formats\n\"\\\\.bak$\",\n\"\\\\.bin$\",\n\"\\\\.docx?$\",\n\"\\\\.exe$\",\n\"\\\\.pdf$\",\n\"\\\\.snap$\",\n\"\\\\.xlsx?$\",\n// archive formats\n\"\\\\.7z$\",\n\"\\\\.bz2$\",\n\"\\\\.gz$\",\n\"\\\\.jar$\",\n\"\\\\.tar$\",\n\"\\\\.tgz$\",\n\"\\\\.war$\",\n\"\\\\.zip$\",\n// log \u0026 (git) patch files\n\"\\\\.log$\",\n\"\\\\.patch$\",\n// generated or minified CSS and JavaScript files\n\"\\\\.(css|js)\\\\.map$\",\n\"min\\\\.(css|js)$\",\n```\n\n#### Ignoring Default Excludes\n\nIf you either set `IgnoreDefaults` to `true` or pass the `-ignore-defaults` commandline switch, the [default excludes](#default-excludes) will be ignored entirely.\n\n#### Manually Excluding\n\n##### via configuration\n\nIn your [configuration file](#configuration) you can exclude files with the `\"exclude\"` key which takes an array of regular expressions.\nThis will get merged with the default excludes (if not [ignored](#ignoring-default-excludes)). You should remember to escape your regular expressions correctly.\n\nA [configuration file](#configuration) which would ignore all test files and all Markdown files can look like this:\n\n```json\n{\n  \"Verbose\": false,\n  \"IgnoreDefaults\": false,\n  \"Exclude\": [\"testfiles\", \"\\\\.md$\"],\n  \"SpacesAfterTabs\": false,\n  \"Disable\": {\n    \"EndOfLine\": false,\n    \"Indentation\": false,\n    \"IndentSize\": false,\n    \"InsertFinalNewline\": false,\n    \"TrimTrailingWhitespace\": false,\n    \"MaxLineLength\": false\n  }\n}\n```\n\n##### via arguments\n\nIf you want to play around how the tool would behave you can also pass the `--exclude` argument to the binary. This will accept a regular expression as well. The argument given will be added to the excludes as defined by your [configuration file](#configuration) (respecting both its [`Exclude`](#via-configuration) and [`IgnoreDefaults`](#ignoring-default-excludes) settings).\n\nFor example: `ec --exclude node_modules`\n\n## Docker\n\nYou are able to run this tool inside a Docker container.\nTo do this you need to have Docker installed and run this command in your repository root which you want to check:\n`docker run --rm --volume=$PWD:/check mstruebing/editorconfig-checker`\n\nDocker Hub: [mstruebing/editorconfig-checker](https://hub.docker.com/r/mstruebing/editorconfig-checker)\n\n## Continuous Integration\n\n### Mega-Linter\n\nInstead of installing and configuring `editorconfig-checker` and all other linters in your project CI workflows (GitHub Actions \u0026 others), you can use [Mega-Linter](https://megalinter.io/latest/) which does all that for you with a single [assisted installation](https://megalinter.io/latest/install-assisted/).\n\nMega-Linter embeds [editorconfig-checker](https://megalinter.io/latest/descriptors/editorconfig_editorconfig_checker/) by default in all its [flavors](https://megalinter.io/latest/flavors/), meaning that it will be run at each commit or Pull Request to detect any issue related to `.editorconfig`.\n\nIf you want to use only `editorconfig-checker` and not the 70+ other linters, you can use the following `.mega-linter.yml` configuration file:\n\n```yaml\nENABLE:\n  - EDITORCONFIG\n```\n\n### GitLab CI\n\nThe [ss-open/ci/recipes project](https://gitlab.com/ss-open/ci/recipes) offers a ready to use lint job integrating editorconfig-checker.\n\n- Main documentation: \u003chttps://gitlab.com/ss-open/ci/recipes/-/blob/main/README.md\u003e\n- Editorconfig job specific documentation: \u003chttps://gitlab.com/ss-open/ci/recipes/-/blob/main/stages/lint/editorconfig/README.md\u003e\n\n## Support\n\nIf you have any questions, suggestions, need a wrapper for a programming language or just want to chat join #editorconfig-checker on freenode(IRC).\nIf you don't have an IRC-client set up you can use the [freenode webchat](https://webchat.freenode.net/?channels=editorconfig-checker).\n\n## Contributing\n\nAnyone can help to improve the project, submit a Feature Request, a bug report or even correct a spelling mistake.\n\nThe steps to contribute can be found in the [CONTRIBUTING.md](./CONTRIBUTING.md) file.\n\n## Semantic Versioning Policy\n\n**editorconfig-checker** adheres to [Semantic Versioning](https://semver.org/) for releases.\n\nHowever, as it is a code quality tool, it's not always clear when a minor or major version bump occurs. The following rules are used to determine the version bump:\n\n- Patch release (1.0.x -\u003e 1.0.y)\n  - Updates to output formats (error messages, logs, ...).\n  - Performance improvements which doesn't affect behavior.\n  - Build process changes (e.g., updating dependencies, updating `Dockerfile`, ...).\n  - Reverts (reverting a previous commit).\n  - Bug fixes which result in **editorconfig-checker** reporting less linting errors (removing \"false-positive\" linting errors).\n- Minor release (1.x.0 -\u003e 1.y.0)\n  - Adding new [configuration options](#configuration), including new CLI flags.\n  - Adding new [path to exclude by default](#default-excludes).\n  - Adding new [output formats](#formats).\n  - Supporting a new [editorconfig](https://editorconfig.org/) property (e.g: `insert_final_newline`, `indent_size`, ...).\n  - Any new feature which doesn't break existing behavior.\n- Major release (x.0.0 -\u003e y.0.0)\n  - Removal of a [configuration](#configuration) option.\n  - Removal of an [output format](#formats).\n  - Removal of a [path to exclude by default](#default-excludes).\n  - Removal of support for an [editorconfig](https://editorconfig.org/) property.\n  - Bug fixes, which result in **editorconfig-checker** reporting more linting errors, because the previous behavior was incorrect according to the [editorconfig specification](https://editorconfig.org/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feditorconfig-checker%2Feditorconfig-checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feditorconfig-checker%2Feditorconfig-checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feditorconfig-checker%2Feditorconfig-checker/lists"}