]> git.liburcu.org Git - lttng-tools.git/commit
misc: Add pre-commit hook for common checks
authorKienan Stewart <kstewart@efficios.com>
Tue, 10 Dec 2024 17:11:37 +0000 (12:11 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 12 Dec 2024 19:54:13 +0000 (19:54 +0000)
commitd60fe7c6eb8ae7d6026bac9d763238e3a50dd0aa
tree774238f10bfb625dc60c6ae327bda1b04eb58900
parent8f8b532c34ee1a05f2d1c190baea0c057378e080
misc: Add pre-commit hook for common checks

The initial version of the pre-commit hook, if installed, will check
the changed with clang-format, clang-tidy, and
python-black. Furthermore, C/C++ source files will be parsed using
python-clang and the comment style (starting with `/*` and ending with
`*/`) will be validated.

This pre-commit hook will check only the staged files.

To install the pre-commit hook:

    ln -s ../../extras/pre-commit.py .git/hooks/pre-commit

Example:

```
$ git hook run pre-commit 2>&1
ERROR:root:Failed rule 'cpp-comment-style'
Wrong comment style at <SourceRange start <SourceLocation file 'src/bin/lttng-sessiond/main.cpp', line 109, column 1>, end <SourceLocation file 'src/bin/lttng-sessiond/main.cpp', line 109, column 6>>
// hi
Wrong comment style at <SourceRange start <SourceLocation file 'src/bin/lttng-sessiond/main.cpp', line 111, column 1>, end <SourceLocation file 'src/bin/lttng-sessiond/main.cpp', line 111, column 12>>
/** hey **/
Wrong comment style at <SourceRange start <SourceLocation file 'src/bin/lttng-sessiond/main.cpp', line 113, column 1>, end <SourceLocation file 'src/bin/lttng-sessiond/main.cpp', line 113, column 11>>
/* sup **/
Wrong comment style at <SourceRange start <SourceLocation file 'src/bin/lttng-sessiond/main.cpp', line 115, column 1>, end <SourceLocation file 'src/bin/lttng-sessiond/main.cpp', line 115, column 3>>
//
Wrong comment style at <SourceRange start <SourceLocation file 'src/bin/lttng-sessiond/main.cpp', line 117, column 1>, end <SourceLocation file 'src/bin/lttng-sessiond/main.cpp', line 117, column 5>>
/**/

ERROR:root:Failed rule 'clang-format'
src/bin/lttng-sessiond/main.cpp:1516:63: error: code should be clang-formatted [-Wclang-format-violations]
        /* Queue of rotation jobs populated by the sessiond-timer. */
                                                                     ^
src/bin/lttng-sessiond/main.cpp:1518:47: error: code should be clang-formatted [-Wclang-format-violations]
        struct lttng_thread *client_thread = nullptr;
                                                     ^

ERROR: root:Failed rule 'python-black'
would reformat asdf.py

Oh no! 💥 💔 💥
1 file would be reformatted.

Change-Id: I91f287a41f242d70aa4feb2b8ca8a6fd46ef708e
--- asdf.py     2024-12-10 19:56:34.558499+00:00
+++ asdf.py     2024-12-10 20:48:24.892474+00:00
@@ -1,4 +1,4 @@
 #!/usr/bin/python3

-if __name__ == '__main__':
+if __name__ == "__main__":
     pass

WARNING:root:Passed: 1
ERROR:root:Failed: 3
ERROR:root:Failed rule: cpp-comment-style
ERROR:root:Failed rule: clang-format
ERROR:root:Failed rule: python-black
```

Known drawbacks
===============

This operates on the whole files instead of the diffs.

The following supplementary tools are required for the pre-commit hook
to run:

 * clang-format
 * clang-tidy
 * python-blacken
 * python-clang (shipped with some clang releases)

Signed-off-by: Kienan Stewart <kstewart@efficios.com>
Change-Id: Icc5e7c9324ebc937cf295619f53557649797d914
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
CONTRIBUTING.md
extras/pre-commit.py [new file with mode: 0755]
This page took 0.029751 seconds and 4 git commands to generate.