-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
117 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
# Pre-commit (https://pre-commit.com) configuration for assorted lint checks. | ||
# | ||
# See https://pre-commit.com/hooks.html for more hooks. | ||
|
||
exclude: "third_party/" | ||
|
||
repos: | ||
- repo: https://github.com/pre-commit/pre-commit-hooks | ||
rev: v3.2.0 | ||
hooks: | ||
- id: check-merge-conflict | ||
|
||
- id: check-yaml | ||
# * Extensions can't be included in the mkdocs schema, so skip checking | ||
# https://github.com/squidfunk/mkdocs-material/issues/6378 | ||
# * clang-format files use `---` to split for multiple languages, | ||
# resulting in errors like `expected a single document in the stream` | ||
exclude: "mkdocs.yml|.clang-format" | ||
|
||
- id: end-of-file-fixer | ||
exclude_types: ["image", "jupyter"] | ||
|
||
- id: trailing-whitespace | ||
exclude_types: ["image", "jupyter"] | ||
|
||
- repo: https://github.com/psf/black | ||
rev: 23.3.0 | ||
hooks: | ||
- id: black | ||
name: Run Black to format Python files | ||
|
||
- repo: https://github.com/pre-commit/mirrors-clang-format | ||
# Loosely track the most recent versions in | ||
# * Runner images: https://github.com/actions/runner-images/ | ||
# * Editor extensions: https://github.com/microsoft/vscode-cpptools | ||
rev: v18.1.3 | ||
hooks: | ||
- id: clang-format | ||
name: Run clang-format on C/C++/etc. files | ||
exclude_types: ["jupyter"] | ||
|
||
- repo: https://github.com/igorshubovych/markdownlint-cli | ||
rev: v0.41.0 | ||
hooks: | ||
- id: markdownlint | ||
name: Run markdownlint on .md files | ||
args: ["--config", "docs/.markdownlint.yml"] | ||
files: "docs/website/.*.md" | ||
exclude: "mlir-dialects/!(index).md" | ||
|
||
- repo: https://github.com/Lucas-C/pre-commit-hooks | ||
rev: v1.5.5 | ||
hooks: | ||
- id: forbid-tabs | ||
exclude: ".gitmodules|Makefile" | ||
|
||
- repo: https://github.com/jlebar/pre-commit-hooks.git | ||
rev: f2d115a052860b09b2888b4f104be614bf3b4779 | ||
hooks: | ||
- id: do-not-submit | ||
|
||
- repo: local | ||
hooks: | ||
- id: buildifier | ||
name: Run buildifier | ||
entry: buildifier | ||
language: golang | ||
# Pinned to v7.1.2, but of course we can't use a tag because semver | ||
# and "go install" just don't work together??? | ||
# This makes absolutely no sense and the maintainers have no intention | ||
# of improving it or at least explaining it as hundreds of developers | ||
# search for basic support: https://github.com/golang/go/issues/35732. | ||
# Docs are technically at https://go.dev/ref/mod#go-install ¯\_(ツ)_/¯ | ||
additional_dependencies: | ||
[ | ||
"github.com/bazelbuild/buildtools/buildifier@1429e15ae755a6762d0edf9198062dc6ed04408d", | ||
] | ||
files: '^(.*/)?(BUILD\.bazel|BUILD|WORKSPACE|WORKSPACE\.bazel|WORKSPACE\.bzlmod|MODULE\.bazel)$|\.BUILD$|\.bzl$' | ||
# Pin the language version so other system version are _not_ used. | ||
# Older go versions used different syntax for "go install" (which is | ||
# apparently different from "go get" and "go build"), so for this to | ||
# work reliably at all we need to ensure at least some minimum. Syntax | ||
# probably changed again in a future version, whatever. | ||
language_version: "1.16" | ||
|
||
# Convert BUILD.bazel files to CMakeLists.txt files in two passes to | ||
# avoid potential race conditions. | ||
# Note: this passes file names to the tool. The tool can also be run | ||
# manually with no arguments specified to walk directories on its own. | ||
# Keep the top level directories here in sync with .bazel_to_cmake.cfg.py. | ||
- id: bazel_to_cmake_1 | ||
name: Run bazel_to_cmake.py on BUILD.bazel files | ||
language: python | ||
entry: ./build_tools/bazel_to_cmake/bazel_to_cmake.py | ||
files: '^(compiler|runtime|samples|tests|tools)/(.*/)?(BUILD\.bazel)$' | ||
- id: bazel_to_cmake_2 | ||
name: Run bazel_to_cmake.py on CMakeLists.txt files | ||
language: python | ||
entry: ./build_tools/bazel_to_cmake/bazel_to_cmake.py | ||
files: "^(compiler|runtime|samples|tests|tools)/(.*/)?(CMakeLists.txt)$" | ||
|
||
- id: check_path_lengths | ||
name: Check for excessively long path lengths | ||
language: fail | ||
entry: Path lengths relative to the root should be < 75 characters (run ./build_tools/scripts/check_path_lengths.py for detailed output) | ||
# The regex includes/excludes here should roughly match the behavior of | ||
# the check_path_lengths.py script. | ||
files: '^compiler/.{66,}/\w+\.' | ||
exclude: "test/" | ||
|
||
- id: build_file_names | ||
name: Check Bazel file names | ||
entry: Files should be named BUILD.bazel instead of BUILD | ||
language: fail | ||
files: "BUILD$" | ||
|
||
# TODO(scotttodd): mypy type checking for Python (https://mypy-lang.org/) |