From 852ae6c1951b64f5ce0117170011f1242b5931e0 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Sun, 6 Feb 2022 21:05:35 +0200 Subject: [PATCH] Meta: Switch to clang-format-14 as the standard formatter Now that clang-format-14 ubuntu packages are available, it's time to finally upgrade our clang-format version. This version brings with it a bunch of useful features with const-placement being the most notable. These will be enabled in the following commits. --- .clang-format | 2 +- .github/workflows/cmake.yml | 8 +++++--- .github/workflows/pvs-studio-static-analysis.yml | 6 ++++-- .github/workflows/sonar-cloud-static-analysis.yml | 6 ++++-- Documentation/CodingStyle.md | 2 +- Documentation/SelfHostedRunners.md | 8 +++++--- Documentation/UsingQtCreator.md | 2 +- Meta/Azure/Setup.yml | 4 +++- Meta/lint-clang-format.sh | 12 ++++++------ 9 files changed, 30 insertions(+), 20 deletions(-) diff --git a/.clang-format b/.clang-format index 65447dc07d0..ed723ef598f 100644 --- a/.clang-format +++ b/.clang-format @@ -2,7 +2,7 @@ Language: Cpp BasedOnStyle: WebKit SpaceAfterTemplateKeyword: false -AlignEscapedNewlines: true +AlignEscapedNewlines: Left AlignTrailingComments: true BreakBeforeInheritanceComma: true BreakConstructorInitializers: BeforeComma diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index fd678f13323..3e9a243f1b4 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -40,7 +40,7 @@ jobs: # sudo apt-get update -qq - name: "Install Ubuntu dependencies" # These packages are already part of the ubuntu-20.04 image: - # cmake clang-format-11 libgmp-dev npm shellcheck + # cmake libgmp-dev npm shellcheck # Packages below aren't. # # We add the canonical-server/server-backports PPA to get updated QEMU releases without having to manage @@ -49,8 +49,10 @@ jobs: run: | sudo add-apt-repository ppa:canonical-server/server-backports sudo add-apt-repository ppa:ubuntu-toolchain-r/test + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main' sudo apt-get update - sudo apt-get install -y ccache e2fsprogs gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build qemu-utils qemu-system-i386 unzip + sudo apt-get install -y clang-format-14 ccache e2fsprogs gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build qemu-utils qemu-system-i386 unzip - name: Install JS dependencies run: sudo npm install -g prettier@2.5.1 - name: Install Python dependencies @@ -59,7 +61,7 @@ jobs: python -m pip install --upgrade pip pip install flake8 requests - name: Check versions - run: set +e; g++ --version; g++-11 --version; clang-format --version; clang-format-11 --version; prettier --version; python --version; python3 --version; ninja --version; flake8 --version; ccache --version; qemu-system-i386 --version + run: set +e; g++ --version; g++-11 --version; clang-format --version; clang-format-14 --version; prettier --version; python --version; python3 --version; ninja --version; flake8 --version; ccache --version; qemu-system-i386 --version # === PREPARE FOR BUILDING === diff --git a/.github/workflows/pvs-studio-static-analysis.yml b/.github/workflows/pvs-studio-static-analysis.yml index c1d019bd872..89e6e16cfeb 100644 --- a/.github/workflows/pvs-studio-static-analysis.yml +++ b/.github/workflows/pvs-studio-static-analysis.yml @@ -21,13 +21,15 @@ jobs: - name: "Install Ubuntu dependencies" # These packages are already part of the ubuntu-20.04 image: - # cmake clang-format-11 libgmp-dev npm shellcheck + # cmake libgmp-dev npm shellcheck # Packages below aren't. # run: | sudo add-apt-repository ppa:ubuntu-toolchain-r/test + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main' sudo apt-get update - sudo apt-get install -y gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build unzip pvs-studio + sudo apt-get install -y clang-format-14 gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build unzip pvs-studio - name: Check versions run: set +e; g++ --version; g++-11 --version; ninja --version; diff --git a/.github/workflows/sonar-cloud-static-analysis.yml b/.github/workflows/sonar-cloud-static-analysis.yml index 30d320cd12a..c846e1b65c5 100644 --- a/.github/workflows/sonar-cloud-static-analysis.yml +++ b/.github/workflows/sonar-cloud-static-analysis.yml @@ -55,12 +55,14 @@ jobs: - name: "Install Ubuntu dependencies" # These packages are already part of the ubuntu-20.04 image: - # cmake clang-format-11 libgmp-dev npm shellcheck + # cmake libgmp-dev npm shellcheck # Packages below aren't. run: | sudo add-apt-repository ppa:ubuntu-toolchain-r/test + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main' sudo apt-get update - sudo apt-get install -y gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build unzip + sudo apt-get install -y clang-format-14 gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build unzip - name: Check versions run: set +e; g++ --version; g++-11 --version; ninja --version; diff --git a/Documentation/CodingStyle.md b/Documentation/CodingStyle.md index 385867c20e0..2955fb5534a 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 11 or later!** +**Important: Make sure you use `clang-format` version 14 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/SelfHostedRunners.md b/Documentation/SelfHostedRunners.md index c2587aa1bd2..5cfccba16f4 100644 --- a/Documentation/SelfHostedRunners.md +++ b/Documentation/SelfHostedRunners.md @@ -18,10 +18,12 @@ These instructions assume the OS installed is Ubuntu 20.04 (Focal), so they migh ### Install base dependencies ```shell -add-apt-repository ppa:canonical-server/server-backports -add-apt-repository ppa:ubuntu-toolchain-r/test +sudo add-apt-repository ppa:canonical-server/server-backports +sudo add-apt-repository ppa:ubuntu-toolchain-r/test +wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - +sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main' apt update -apt install git build-essential make cmake clang-format-11 gcc-11 g++-11 libstdc++-11-dev libgmp-dev ccache libmpfr-dev libmpc-dev ninja-build e2fsprogs qemu-utils qemu-system-i386 wabt +apt install git build-essential make cmake clang-format-14 gcc-11 g++-11 libstdc++-11-dev libgmp-dev ccache libmpfr-dev libmpc-dev ninja-build e2fsprogs qemu-utils qemu-system-i386 wabt ``` ### Force usage of GCC 11 ```shell diff --git a/Documentation/UsingQtCreator.md b/Documentation/UsingQtCreator.md index 048199100ac..40662d2743e 100644 --- a/Documentation/UsingQtCreator.md +++ b/Documentation/UsingQtCreator.md @@ -40,7 +40,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 11, as some OSes still ship clang-format version 9 or 10 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 14, 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 0fc86a1ed0a..b10ec1e5499 100644 --- a/Meta/Azure/Setup.yml +++ b/Meta/Azure/Setup.yml @@ -9,8 +9,10 @@ steps: - script: | sudo add-apt-repository ppa:canonical-server/server-backports sudo add-apt-repository ppa:ubuntu-toolchain-r/test + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main' sudo apt-get update - sudo apt-get install ccache e2fsprogs gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build qemu-utils qemu-system-i386 unzip lld + sudo apt-get install clang-format-14 ccache e2fsprogs gcc-11 g++-11 libstdc++-11-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 09fbdf12e54..639a58ff49a 100755 --- a/Meta/lint-clang-format.sh +++ b/Meta/lint-clang-format.sh @@ -27,17 +27,17 @@ fi if (( ${#files[@]} )); then CLANG_FORMAT=false - if command -v clang-format-11 >/dev/null 2>&1 ; then - CLANG_FORMAT=clang-format-11 + if command -v clang-format-14 >/dev/null 2>&1 ; then + CLANG_FORMAT=clang-format-14 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) < 11) exit 1; }'; then - echo "You are using '$("${CLANG_FORMAT}" --version)', which appears to not be clang-format 11 or later." + if ! "${CLANG_FORMAT}" --version | awk '{ if (substr($NF, 1, index($NF, ".") - 1) < 14) exit 1; }'; then + echo "You are using '$("${CLANG_FORMAT}" --version)', which appears to not be clang-format 14 or later." echo "It is very likely that the resulting changes are not what you wanted." fi else - echo "clang-format-11 is not available, but C or C++ files need linting! Either skip this script, or install clang-format-11." - echo "(If you install a package 'clang-format', please make sure it's version 11 or later.)" + echo "clang-format-14 is not available, but C or C++ files need linting! Either skip this script, or install clang-format-14." + echo "(If you install a package 'clang-format', please make sure it's version 14 or later.)" exit 1 fi