From 823fdb83dbba2643475f77f5041f6f1da179b88c Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 24 Apr 2024 06:50:38 -0400 Subject: [PATCH] Meta: Switch to clang-format-18 as the standard formatter --- .../serenity/devcontainer-feature.json | 2 +- .github/workflows/cmake.yml | 6 +++--- .../workflows/pvs-studio-static-analysis.yml | 4 ++-- .../workflows/sonar-cloud-static-analysis.yml | 4 ++-- CONTRIBUTING.md | 2 +- Documentation/CodingStyle.md | 2 +- Documentation/QtCreatorConfiguration.md | 2 +- Meta/Azure/Setup.yml | 4 ++-- Meta/lint-clang-format.sh | 18 +++++++++--------- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.devcontainer/features/serenity/devcontainer-feature.json b/.devcontainer/features/serenity/devcontainer-feature.json index 79450f3d8a8..7685af01f23 100644 --- a/.devcontainer/features/serenity/devcontainer-feature.json +++ b/.devcontainer/features/serenity/devcontainer-feature.json @@ -13,7 +13,7 @@ 18, "trunk" ], - "default": 16, + "default": 18, "description": "Select LLVM compiler version to use" }, "enable_ladybird": { diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index b740091bff0..0450beb8236 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -57,9 +57,9 @@ jobs: # Packages below aren't. run: | wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main' + sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main' sudo apt-get update - sudo apt-get install -y clang-format-16 ccache e2fsprogs gcc-13 g++-13 libstdc++-13-dev libmpfr-dev libmpc-dev ninja-build optipng qemu-utils qemu-system-i386 unzip generate-ninja libegl1-mesa-dev + sudo apt-get install -y clang-format-18 ccache e2fsprogs gcc-13 g++-13 libstdc++-13-dev libmpfr-dev libmpc-dev ninja-build optipng qemu-utils qemu-system-i386 unzip generate-ninja libegl1-mesa-dev if ${{ matrix.arch == 'aarch64' }}; then # FIXME: Remove this when we no longer build our own Qemu binary. sudo apt-get install libgtk-3-dev libpixman-1-dev libsdl2-dev libslirp-dev @@ -72,7 +72,7 @@ jobs: python -m pip install --upgrade pip pip install flake8 requests - name: Check versions - run: set +e; g++ --version; g++-13 --version; clang-format --version; clang-format-16 --version; prettier --version; python --version; python3 --version; ninja --version; flake8 --version; ccache --version; qemu-system-i386 --version; gn --version + run: set +e; g++ --version; g++-13 --version; clang-format --version; clang-format-18 --version; prettier --version; python --version; python3 --version; ninja --version; flake8 --version; ccache --version; qemu-system-i386 --version; gn --version - name: Enable KVM group perms run: | diff --git a/.github/workflows/pvs-studio-static-analysis.yml b/.github/workflows/pvs-studio-static-analysis.yml index df8a4c980ac..5ec11abdff1 100644 --- a/.github/workflows/pvs-studio-static-analysis.yml +++ b/.github/workflows/pvs-studio-static-analysis.yml @@ -26,9 +26,9 @@ jobs: # run: | wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main' + sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main' sudo apt-get update - sudo apt-get install -y clang-format-16 gcc-13 g++-13 libstdc++-13-dev libmpfr-dev libmpc-dev ninja-build unzip pvs-studio + sudo apt-get install -y clang-format-18 gcc-13 g++-13 libstdc++-13-dev libmpfr-dev libmpc-dev ninja-build unzip pvs-studio - name: Check versions run: set +e; g++ --version; g++-13 --version; ninja --version; diff --git a/.github/workflows/sonar-cloud-static-analysis.yml b/.github/workflows/sonar-cloud-static-analysis.yml index 55e64ad6bf2..057b2963e17 100644 --- a/.github/workflows/sonar-cloud-static-analysis.yml +++ b/.github/workflows/sonar-cloud-static-analysis.yml @@ -58,9 +58,9 @@ jobs: # Packages below aren't. run: | wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main' + sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main' sudo apt-get update - sudo apt-get install -y clang-format-16 gcc-13 g++-13 libstdc++-13-dev libmpfr-dev libmpc-dev ninja-build unzip + sudo apt-get install -y clang-format-18 gcc-13 g++-13 libstdc++-13-dev libmpfr-dev libmpc-dev ninja-build unzip - name: Check versions run: set +e; g++ --version; g++-13 --version; ninja --version; diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1c87935bb49..9ef18c64d6e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -44,7 +44,7 @@ Nobody is perfect, and sometimes we mess things up. That said, here are some goo **Do:** * Write in idiomatic SerenityOS C++20, using the `AK` containers in all code. -* Conform to the project coding style found in [CodingStyle.md](https://github.com/SerenityOS/serenity/blob/master/Documentation/CodingStyle.md). Use `clang-format` (version 16 or later) to automatically format C++ files. See [AdvancedBuildInstructions.md](https://github.com/SerenityOS/serenity/blob/master/Documentation/AdvancedBuildInstructions.md#clang-format-updates) for instructions on how to get an up-to-date version if your OS distribution does not ship clang-format-16. +* Conform to the project coding style found in [CodingStyle.md](https://github.com/SerenityOS/serenity/blob/master/Documentation/CodingStyle.md). Use `clang-format` (version 18 or later) to automatically format C++ files. See [AdvancedBuildInstructions.md](https://github.com/SerenityOS/serenity/blob/master/Documentation/AdvancedBuildInstructions.md#clang-format-updates) for instructions on how to get an up-to-date version if your OS distribution does not ship clang-format-18. * Choose expressive variable, function and class names. Make it as obvious as possible what the code is doing. * Split your changes into separate, atomic commits (i.e. A commit per feature or fix, where the build, tests and the system are all functioning). * Make sure your commits are rebased on the master branch. diff --git a/Documentation/CodingStyle.md b/Documentation/CodingStyle.md index 5f696aaec40..f25bca4bd90 100644 --- a/Documentation/CodingStyle.md +++ b/Documentation/CodingStyle.md @@ -2,7 +2,7 @@ For low-level styling (spaces, parentheses, brace placement, etc), all code should follow the format specified in `.clang-format` in the project root. -**Important: Make sure you use `clang-format` version 16 or later!** +**Important: Make sure you use `clang-format` version 18 or later!** This document describes the coding style used for C++ code in the Serenity Operating System project. All new code should conform to this style. diff --git a/Documentation/QtCreatorConfiguration.md b/Documentation/QtCreatorConfiguration.md index 344507ec384..a6b0443c728 100644 --- a/Documentation/QtCreatorConfiguration.md +++ b/Documentation/QtCreatorConfiguration.md @@ -48,7 +48,7 @@ Qt Creator should be set up correctly now, go ahead and explore the project and ## Auto-Formatting -You can use `clang-format` to help you with the [style guide](CodingStyle.md). Before you proceed, check that you're actually using clang-format version 16, as some OSes will ship older clang-format versions by default. +You can use `clang-format` to help you with the [style guide](CodingStyle.md). Before you proceed, check that you're actually using clang-format version 18, as some OSes will ship older clang-format versions by default. - In QtCreator, go to "Help > About Plugins…" - Find the `Beautifier (experimental)` row (for example, by typing `beau` into the search) diff --git a/Meta/Azure/Setup.yml b/Meta/Azure/Setup.yml index 6ef62934cec..b6812d61684 100644 --- a/Meta/Azure/Setup.yml +++ b/Meta/Azure/Setup.yml @@ -9,9 +9,9 @@ steps: - script: | set -e wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main' + sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main' sudo apt-get update - sudo apt-get install clang-format-16 ccache e2fsprogs gcc-13 g++-13 libstdc++-13-dev libmpfr-dev libmpc-dev ninja-build qemu-utils qemu-system-i386 unzip lld + sudo apt-get install clang-format-18 ccache e2fsprogs gcc-13 g++-13 libstdc++-13-dev libmpfr-dev libmpc-dev ninja-build qemu-utils qemu-system-i386 unzip lld displayName: 'Install Dependencies' - ${{ if eq(parameters.os, 'Linux') }}: diff --git a/Meta/lint-clang-format.sh b/Meta/lint-clang-format.sh index b129d8b6cbc..d50370c9fec 100755 --- a/Meta/lint-clang-format.sh +++ b/Meta/lint-clang-format.sh @@ -29,21 +29,21 @@ fi if (( ${#files[@]} )); then TOOLCHAIN_DIR=Toolchain/Local/clang/bin CLANG_FORMAT=false - if command -v clang-format-16 >/dev/null 2>&1 ; then - CLANG_FORMAT=clang-format-16 - elif command -v brew >/dev/null 2>&1 && command -v "$(brew --prefix llvm@16)"/bin/clang-format >/dev/null 2>&1 ; then - CLANG_FORMAT="$(brew --prefix llvm@16)"/bin/clang-format - elif command -v $TOOLCHAIN_DIR/clang-format >/dev/null 2>&1 && $TOOLCHAIN_DIR/clang-format --version | grep -qF ' 16.' ; then + if command -v clang-format-18 >/dev/null 2>&1 ; then + CLANG_FORMAT=clang-format-18 + elif command -v brew >/dev/null 2>&1 && command -v "$(brew --prefix llvm@18)"/bin/clang-format >/dev/null 2>&1 ; then + CLANG_FORMAT="$(brew --prefix llvm@18)"/bin/clang-format + elif command -v $TOOLCHAIN_DIR/clang-format >/dev/null 2>&1 && $TOOLCHAIN_DIR/clang-format --version | grep -qF ' 18.' ; then CLANG_FORMAT=$TOOLCHAIN_DIR/clang-format elif command -v clang-format >/dev/null 2>&1 ; then CLANG_FORMAT=clang-format - if ! "${CLANG_FORMAT}" --version | awk '{ if (substr($NF, 1, index($NF, ".") - 1) < 16) exit 1; }'; then - echo "You are using '$("${CLANG_FORMAT}" --version)', which appears to not be clang-format 16 or later." + if ! "${CLANG_FORMAT}" --version | awk '{ if (substr($NF, 1, index($NF, ".") - 1) < 18) exit 1; }'; then + echo "You are using '$("${CLANG_FORMAT}" --version)', which appears to not be clang-format 18 or later." echo "It is very likely that the resulting changes are not what you wanted." fi else - echo "clang-format-16 is not available, but C or C++ files need linting! Either skip this script, or install clang-format-16." - echo "(If you install a package 'clang-format', please make sure it's version 16 or later.)" + echo "clang-format-18 is not available, but C or C++ files need linting! Either skip this script, or install clang-format-18." + echo "(If you install a package 'clang-format', please make sure it's version 18 or later.)" exit 1 fi