From 07bb699993fc8217d721c2d2bd9134db59b471a2 Mon Sep 17 00:00:00 2001 From: kcossett-amd Date: Mon, 26 May 2025 14:50:48 -0400 Subject: [PATCH] Add Pre-Commit Hooks (#212) Pre-commit hooks for: - clang-format - cmake-format - copyright header check - YAML check - Trailing whitespace and end-of-file newline check --------- Co-authored-by: David Galiffi Co-authored-by: Peter Park [ROCm/rocprofiler-systems commit: 54e91f1c2d1b2c022a8b501dc172652ee192e7c0] --- .../.pre-commit-config.yaml | 71 ++++++++++++++ projects/rocprofiler-systems/CONTRIBUTING.md | 18 ++++ .../docs/data/pre-commit-hook.png | Bin 0 -> 18176 bytes .../scripts/check-cmake-format.sh | 39 ++++++++ ...k_copyright.sh => check-copyright-date.sh} | 0 .../scripts/check-copyright.sh | 91 ++++++++++++++++++ 6 files changed, 219 insertions(+) create mode 100644 projects/rocprofiler-systems/.pre-commit-config.yaml create mode 100644 projects/rocprofiler-systems/docs/data/pre-commit-hook.png create mode 100755 projects/rocprofiler-systems/scripts/check-cmake-format.sh rename projects/rocprofiler-systems/scripts/{check_copyright.sh => check-copyright-date.sh} (100%) create mode 100755 projects/rocprofiler-systems/scripts/check-copyright.sh diff --git a/projects/rocprofiler-systems/.pre-commit-config.yaml b/projects/rocprofiler-systems/.pre-commit-config.yaml new file mode 100644 index 0000000000..676e16ac25 --- /dev/null +++ b/projects/rocprofiler-systems/.pre-commit-config.yaml @@ -0,0 +1,71 @@ +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +# Pre-configuration file for pre-commit hooks +# This is optional. To run pre-commit, see CONTRIBUTING.md + +exclude: \.(svg)$|(^|/)\.gitignore$ # Exclude files with these extensions +default_stages: [pre-commit] +repos: + + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: check-yaml # Check YAML files for syntax errors + - id: trailing-whitespace # Remove trailing whitespace + - id: end-of-file-fixer # Fix files to have a newline at the end + + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v11.1.0 # Version 11 as specified in contributor guide + hooks: + - id: clang-format + files: \.(c|cpp|h.*)$ + + - repo: local + hooks: + - id: check-cmake + name: cmake-format + entry: ./scripts/check-cmake-format.sh + language: script + files: (^|/)(CMakeLists\.txt|.*\.cmake)$ + + - repo: local + hooks: + - id: check-copyright + name: copyright-detector + require_serial: true # Slightly slower, but prevents hook running script many times + entry: ./scripts/check-copyright.sh + language: script + files: \.(c|h|txt|cpp|hpp|py)$ + exclude: ^\.|^docs/|^examples/lulesh/|^examples/mpi/|^examples/openmp/|^external/|^cmake/ + + # - repo: local + # hooks: + # - id: check-copyright-date + # name: Check Copyright Date + # # Check copyright date in all files + # # Fails if something is out of date. + # # -u automatically updates copyright year + # entry: ./scripts/check-copyright.sh -u + # language: script + # files: \.(c|h|txt|cpp|hpp|py)$ + # exclude: ^\.|^docs/|^examples/lulesh/|^examples/mpi/|^examples/openmp/|^external/|^cmake/ diff --git a/projects/rocprofiler-systems/CONTRIBUTING.md b/projects/rocprofiler-systems/CONTRIBUTING.md index ff0b539c34..1b8e8e57c0 100644 --- a/projects/rocprofiler-systems/CONTRIBUTING.md +++ b/projects/rocprofiler-systems/CONTRIBUTING.md @@ -79,6 +79,24 @@ By creating a pull request, you agree to the statements made in the [code licens * Group related files together and maintain a logical hierarchy. * Use `clang-format-11` and `cmake-format` formatters to ensure consistency. +### Using pre-commit hooks ### + +Our project supports optional [*pre-commit hooks*](https://pre-commit.com/#introduction) which developers can leverage to verify formatting before publishing their code. Once enabled, any commits you propose to the repository will be automatically checked for formatting. Initial setup is as follows: + +```shell +pip install pre-commit # or: apt-get install pre-commit +cd rocprofiler-systems +pre-commit install +``` + +**Note:** pre-commit version **3.0.0 or higher** is required. + +Now, when you commit code to the repository you should see something like this: + +![A screen capture showing terminal output from a pre-commit hook](docs/data/pre-commit-hook.png) + +Please see the [pre-commit documentation](https://pre-commit.com/#quick-start) for additional information. + ## Code License ## All code contributed to this project will be licensed under the license identified in the [License](LICENSE). Your contribution will be accepted under the same license. diff --git a/projects/rocprofiler-systems/docs/data/pre-commit-hook.png b/projects/rocprofiler-systems/docs/data/pre-commit-hook.png new file mode 100644 index 0000000000000000000000000000000000000000..c362611d5c6ae412dcf41978fe5a4ce907281819 GIT binary patch literal 18176 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 z%0Dx|O#9eb(G4+0ge;mytp^PEy@kBeXZi-R>Fi9hz{@_%;>1fc?gsWTt@3j)F+87_ zM6a0{6g1j*6_&46Mo5O@dXM@{&|GolN}^I3uHk6G3>JD^7(Hn`iNXZ3ya4aMLixgV zqOKMB20Y7O91v9NNI3_LZts&GX{=Hzg1X&Vy?BfdLQ{=MGjS67ALDl^j^0R>K<)RA zn$C9Ig);C3{oltIOf>?&t9cN4`U#a4l+>wj%dn$padss*qK6(&6tRZBmhF5X3*5+z zRDeC*3X7i|AcJfvkfiQu!G@nvYQ?@x!KcV>)N=M%2z3SjV6|jaor39)YlCW|nLuK% z1>vrs$C|70{PltEmkNk#n-g|TB*>)Ke(&m zBS+=)OvO}}rP*mQyIIHX)!_^=E?ns{8be;S?faXu&KZ!l=QXQ}@q^P4W~-FbKc zqq7>JG-_CvpA&2Un@06>vj8)T>PKco7-KD=(La%%IyQFGhZOSQ@a}{d-b3c>NCm9q zk(RxLa&9EU8^tN|Iky+@x?MDfaUAK-{Ujg@#_}-vFu_dQ(#AJ6d3n?rJ9-NAHgIK& zvi|J1IKMUKqA*~Rcx!zM)QdI-Vf>r0QP4e%rm9+bm2E1-V6&-`yDUyW-Q8M(l*?ln zipjvmaL59lVxGeD0O>&wyx#hOU)hhJ_2+>G?xF}}_aT5+y#Nx}@F?nfwwjF>2d+J`_J88Sw8hE<7R8z;Cp{%)>{yZg6J zi0ilWZkPCR=T7Nw41qU?95ytI8Pr#gsd3j#n7C=ZhC){5CWRNDZ@rG^tbySqB2II$ z)sI5qMQh&U*l{Z2<0526?@IpIGhRsi_x6lz>3t3gGfpg;Az82$d@jshBU+KI!>-@` zh%n!zEqXzb%j@Dbc|u&T3wmNyGWng)R{d!KEgCssL?uUZ7Lz05JwP&s)A{5pWfIT) zgtR6|3V)ZZiH-=Wv+pj`*FB!a-Fpup?CK-5y-AWcDwnN0^hzD1QcqUFk{~!n!jsI- zThlmQzxx{jC)i1|BUzDNM5_)IzJ}lagTDDI0u?L-)b4&CfYF3T3UTYAOR35YH1<;UpvEaQsL6<&{MyIXa4cv|I;>ktDJ3^WBu#r|==Y~Edr*W1Fb6dbwq03y(+&QhZMd^%{ z;(GNz#X-|Wt@%q2G+Cs*%e;R`2b2mGRg8@IzbB=9-8*$wdo`Z{P}w@Q)Fq&v$o>VH mKfWY50@VN&7BT#*f4=?iQJHj`qrg*Z7(8A5T-G@yGywp*94*!W literal 0 HcmV?d00001 diff --git a/projects/rocprofiler-systems/scripts/check-cmake-format.sh b/projects/rocprofiler-systems/scripts/check-cmake-format.sh new file mode 100755 index 0000000000..700db677e5 --- /dev/null +++ b/projects/rocprofiler-systems/scripts/check-cmake-format.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +if ! command -v cmake-format &> /dev/null; then + echo "cmake-format could not be found. Please install it with 'pip install cmake-format' or 'apt install cmake-format'." + exit 1 +fi + +for file in "$@"; do + # Run cmake-format in-place + cmake-format -i "$file" + # Check if the file has changes using git diff + if ! git diff --quiet -- "$file"; then + echo "Formatted: $file" + fi +done + +exit 0 diff --git a/projects/rocprofiler-systems/scripts/check_copyright.sh b/projects/rocprofiler-systems/scripts/check-copyright-date.sh similarity index 100% rename from projects/rocprofiler-systems/scripts/check_copyright.sh rename to projects/rocprofiler-systems/scripts/check-copyright-date.sh diff --git a/projects/rocprofiler-systems/scripts/check-copyright.sh b/projects/rocprofiler-systems/scripts/check-copyright.sh new file mode 100755 index 0000000000..f4b547424c --- /dev/null +++ b/projects/rocprofiler-systems/scripts/check-copyright.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env bash + +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +expected_copyright=("Copyright (c)" ".COPYRIGHT") +files_with_missing_copyright=() +files=("$@") + +if [[ "$ALLOW_MISSING_COPYRIGHT" == "1" ]]; then + exit 0 +fi + +for file in "${files[@]}"; do + if [[ -f "$file" ]]; then + found=0 + for pattern in "${expected_copyright[@]}"; do + if grep -Fq "$pattern" "$file"; then + found=1 + break + fi + done + if [[ $found -eq 0 ]]; then + files_with_missing_copyright+=("$file") + fi + fi +done + +if [ ${#files_with_missing_copyright[@]} -ne 0 ]; then + if [[ "$ADD_COPYRIGHT" == "1" ]]; then + for file in "${files_with_missing_copyright[@]}"; do + # Determine the comment style based on the file extension + if [[ "$file" == *.c || "$file" == *.cpp || "$file" == *.h || "$file" == *.hpp ]]; then + comS="//" + else + comS="#" + fi + + # Read LICENSE file and prepend comment prefix to each line + copyright_notice="" + while IFS= read -r line; do + if [[ -n "$line" ]]; then + copyright_notice+="$comS $line"$'\n' + else + copyright_notice+="$comS"$'\n' + fi + done < LICENSE + + # Add the notice to the beginning of the file + temp_file=$(mktemp) + { + echo -e "$copyright_notice" + cat "$file" + } > "$temp_file" + mv "$temp_file" "$file" + done + echo "Copyright notices added." + exit 1 + fi + echo "The following files are missing a valid copyright notice:" + echo "" + for file in "${files_with_missing_copyright[@]}"; do + echo "$file" + done + echo "" + echo "It may be the case that the copyright is not required by some files." + echo "To override this check, set the environment variable ALLOW_MISSING_COPYRIGHT=1" + echo "To add the copyright to all files listed above, set the environment variable ADD_COPYRIGHT=1" + exit 1 +fi + +exit 0