mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 12:34:43 +00:00
[pre-commit] Add tclint hook
Add a pre-commit hook that enables tclint [1] (a Tcl linter) for the gdb testsuite. The pre-commit hook doesn't reference the official url, because that one doesn't have pre-commit support yet [2]. Instead, it uses a fork on my personal github account. The fork contains a tag v0.6.0-gdb, which is the official v0.6.0 release plus a commit adding a .pre-commit-hooks.yaml file. Given that this is a personal github account, I thought it would be safer to refer to the git SHA than to the tag. Also add a tclint configuration file gdb/tclint.toml. In the configuration file, we still ignore most dirs because they're not tclint-clean. Consequently, the tclint pre-commit check passes: ... $ pre-commit run --all-files -v tclint tclint........................Passed - hook id: tclint - duration: 0.25s $ ... PR testsuite/33403 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33403 Approved-By: Tom Tromey <tom@tromey.com> [1] https://github.com/nmoroze/tclint [2] https://github.com/nmoroze/tclint/issues/110
This commit is contained in:
@@ -88,3 +88,18 @@ repos:
|
||||
verbose: true
|
||||
always_run: true
|
||||
stages: [commit-msg]
|
||||
- # We'd like to use the official repo, like this:
|
||||
# repo: https://github.com/nmoroze/tclint
|
||||
# rev: v0.6.0
|
||||
# but it doesn't have a .pre-commit-hooks.yaml file.
|
||||
# Work around this by using an unoffical repo. The repo contains a tag
|
||||
# v0.6.0-gdb that adds a .pre-commit-hooks.yaml file to the v0.6.0 release
|
||||
# of the offical repo. Since we're using an unofficial repo, use the git
|
||||
# SHA instead of the tag.
|
||||
repo: https://github.com/vries/tclint.git
|
||||
rev: 2e6b4510fb3d3d6f8f2609af0f7158fabc0c96e4
|
||||
hooks:
|
||||
- id: tclint
|
||||
args: [--config, gdb/tclint.toml]
|
||||
types_or: [file]
|
||||
files: 'gdb/testsuite/.*\.(exp|tcl)$'
|
||||
|
||||
63
gdb/tclint.toml
Normal file
63
gdb/tclint.toml
Normal file
@@ -0,0 +1,63 @@
|
||||
# Copyright 2025 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Configuration file for tclint ( https://github.com/nmoroze/tclint ).
|
||||
|
||||
exclude = [
|
||||
"gdb/testsuite/boards",
|
||||
"gdb/testsuite/config",
|
||||
"gdb/testsuite/lib",
|
||||
"gdb/testsuite/gdb.arch",
|
||||
"gdb/testsuite/gdb.base",
|
||||
"gdb/testsuite/gdb.btrace",
|
||||
"gdb/testsuite/gdb.compile",
|
||||
"gdb/testsuite/gdb.cp",
|
||||
"gdb/testsuite/gdb.ctf",
|
||||
"gdb/testsuite/gdb.dwarf2",
|
||||
"gdb/testsuite/gdb.fortran",
|
||||
"gdb/testsuite/gdb.guile",
|
||||
"gdb/testsuite/gdb.mi",
|
||||
"gdb/testsuite/gdb.opencl",
|
||||
"gdb/testsuite/gdb.perf",
|
||||
"gdb/testsuite/gdb.python",
|
||||
"gdb/testsuite/gdb.reverse",
|
||||
"gdb/testsuite/gdb.stabs",
|
||||
"gdb/testsuite/gdb.threads",
|
||||
"gdb/testsuite/gdb.trace",
|
||||
]
|
||||
|
||||
# A maximum line length of 80 is current policy, but it hasn't been too
|
||||
# strictly enforced. It's the most frequent and least harmful violation.
|
||||
# Ignore this for now.
|
||||
ignore = ["line-length"]
|
||||
|
||||
extensions = ["exp", "tcl"]
|
||||
|
||||
[style]
|
||||
# Used by tclfmt. Doesn't support the mixed TAB and spaces style we use. See
|
||||
# this tclint issue ( https://github.com/nmoroze/tclint/issues/109 ).
|
||||
indent = 4
|
||||
|
||||
# Used by both tclint and tclfmt. Current policy is 80.
|
||||
line-length = 80
|
||||
|
||||
# Used by tclfmt.
|
||||
max-blank-lines = 1
|
||||
|
||||
# Used by tclfmt. False conflicts with emacs tcl mode.
|
||||
indent-namespace-eval = true
|
||||
|
||||
# Used by tclfmt.
|
||||
spaces-in-braces = false
|
||||
Reference in New Issue
Block a user