mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
Meta: Switch to clang-format-16 as the standard formatter
This includes a few new options to the .clang-format configuration file to A) adhere to option changes within clang-format 16 (namely the option AlignTrailingComments), and B) enforce existing style guide rules with new clang-format rules.
This commit is contained in:
parent
1e733b1cf4
commit
388d455575
Notes:
sideshowbarker
2024-07-17 18:23:22 +09:00
Author: https://github.com/trflynn89 Commit: https://github.com/SerenityOS/serenity/commit/388d455575 Pull-request: https://github.com/SerenityOS/serenity/pull/19876 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/BertalanD
12 changed files with 31 additions and 26 deletions
|
@ -1,7 +1,9 @@
|
||||||
---
|
---
|
||||||
Language: Cpp
|
Language: Cpp
|
||||||
AlignEscapedNewlines: Left
|
AlignEscapedNewlines: Left
|
||||||
AlignTrailingComments: true
|
AlignTrailingComments:
|
||||||
|
Kind: Always
|
||||||
|
OverEmptyLines: 0
|
||||||
BasedOnStyle: WebKit
|
BasedOnStyle: WebKit
|
||||||
BraceWrapping:
|
BraceWrapping:
|
||||||
AfterFunction: true
|
AfterFunction: true
|
||||||
|
@ -10,7 +12,10 @@ BreakBeforeInheritanceComma: true
|
||||||
BreakConstructorInitializers: BeforeComma
|
BreakConstructorInitializers: BeforeComma
|
||||||
IndentPPDirectives: AfterHash
|
IndentPPDirectives: AfterHash
|
||||||
IndentRequiresClause: false
|
IndentRequiresClause: false
|
||||||
|
InsertNewlineAtEOF: true
|
||||||
|
LineEnding: LF
|
||||||
NamespaceIndentation: None
|
NamespaceIndentation: None
|
||||||
QualifierAlignment: Right
|
QualifierAlignment: Right
|
||||||
RequiresClausePosition: WithFollowing
|
RequiresClausePosition: WithFollowing
|
||||||
|
RequiresExpressionIndentation: OuterScope
|
||||||
SpaceAfterTemplateKeyword: false
|
SpaceAfterTemplateKeyword: false
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
"ghcr.io/devcontainers/features/github-cli:1": {},
|
"ghcr.io/devcontainers/features/github-cli:1": {},
|
||||||
"ghcr.io/devcontainers-contrib/features/pre-commit:1": {},
|
"ghcr.io/devcontainers-contrib/features/pre-commit:1": {},
|
||||||
"./features/serenity": {
|
"./features/serenity": {
|
||||||
"llvm_version": 15,
|
"llvm_version": 16,
|
||||||
"enable_ladybird": true,
|
"enable_ladybird": true,
|
||||||
"enable_serenity": true
|
"enable_serenity": true
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
"llvm_version": {
|
"llvm_version": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"proposals": [
|
"proposals": [
|
||||||
14,
|
|
||||||
15,
|
15,
|
||||||
|
16,
|
||||||
"trunk"
|
"trunk"
|
||||||
],
|
],
|
||||||
"default": 15,
|
"default": 16,
|
||||||
"description": "Select LLVM compiler version to use"
|
"description": "Select LLVM compiler version to use"
|
||||||
},
|
},
|
||||||
"enable_ladybird": {
|
"enable_ladybird": {
|
||||||
|
|
|
@ -3,7 +3,7 @@ set -e
|
||||||
|
|
||||||
# Feature options
|
# Feature options
|
||||||
|
|
||||||
LLVM_VERSION=${LLVM_VERSION:-15}
|
LLVM_VERSION=${LLVM_VERSION:-16}
|
||||||
ENABLE_LADYBIRD=${ENABLE_LADYBIRD:-true}
|
ENABLE_LADYBIRD=${ENABLE_LADYBIRD:-true}
|
||||||
ENABLE_SERENITY=${ENABLE_SERENITY:-true}
|
ENABLE_SERENITY=${ENABLE_SERENITY:-true}
|
||||||
|
|
||||||
|
|
6
.github/workflows/cmake.yml
vendored
6
.github/workflows/cmake.yml
vendored
|
@ -57,9 +57,9 @@ jobs:
|
||||||
# Packages below aren't.
|
# Packages below aren't.
|
||||||
run: |
|
run: |
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
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-15 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main'
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y clang-format-15 ccache e2fsprogs gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build optipng qemu-utils qemu-system-i386 unzip
|
sudo apt-get install -y clang-format-16 ccache e2fsprogs gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build optipng qemu-utils qemu-system-i386 unzip
|
||||||
if ${{ matrix.arch == 'aarch64' }}; then
|
if ${{ matrix.arch == 'aarch64' }}; then
|
||||||
# FIXME: Remove this when we no longer build our own Qemu binary.
|
# 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
|
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
|
python -m pip install --upgrade pip
|
||||||
pip install flake8 requests
|
pip install flake8 requests
|
||||||
- name: Check versions
|
- name: Check versions
|
||||||
run: set +e; g++ --version; g++-12 --version; clang-format --version; clang-format-15 --version; prettier --version; python --version; python3 --version; ninja --version; flake8 --version; ccache --version; qemu-system-i386 --version
|
run: set +e; g++ --version; g++-12 --version; clang-format --version; clang-format-16 --version; prettier --version; python --version; python3 --version; ninja --version; flake8 --version; ccache --version; qemu-system-i386 --version
|
||||||
|
|
||||||
# === PREPARE FOR BUILDING ===
|
# === PREPARE FOR BUILDING ===
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,9 @@ jobs:
|
||||||
#
|
#
|
||||||
run: |
|
run: |
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
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-15 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main'
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y clang-format-15 gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build unzip pvs-studio
|
sudo apt-get install -y clang-format-16 gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build unzip pvs-studio
|
||||||
|
|
||||||
- name: Check versions
|
- name: Check versions
|
||||||
run: set +e; g++ --version; g++-12 --version; ninja --version;
|
run: set +e; g++ --version; g++-12 --version; ninja --version;
|
||||||
|
|
|
@ -58,9 +58,9 @@ jobs:
|
||||||
# Packages below aren't.
|
# Packages below aren't.
|
||||||
run: |
|
run: |
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
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-15 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main'
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y clang-format-15 gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build unzip
|
sudo apt-get install -y clang-format-16 gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build unzip
|
||||||
|
|
||||||
- name: Check versions
|
- name: Check versions
|
||||||
run: set +e; g++ --version; g++-12 --version; ninja --version;
|
run: set +e; g++ --version; g++-12 --version; ninja --version;
|
||||||
|
|
|
@ -40,7 +40,7 @@ Nobody is perfect, and sometimes we mess things up. That said, here are some goo
|
||||||
**Do:**
|
**Do:**
|
||||||
|
|
||||||
* Write in idiomatic SerenityOS C++20, using the `AK` containers in all code.
|
* 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 15 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-15.
|
* 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-15.
|
||||||
* Choose expressive variable, function and class names. Make it as obvious as possible what the code is doing.
|
* 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).
|
* 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.
|
* Make sure your commits are rebased on the master branch.
|
||||||
|
|
|
@ -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.
|
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 15 or later!**
|
**Important: Make sure you use `clang-format` version 16 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.
|
This document describes the coding style used for C++ code in the Serenity Operating System project. All new code should conform to this style.
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ Qt Creator should be set up correctly now, go ahead and explore the project and
|
||||||
|
|
||||||
## Auto-Formatting
|
## 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 15, 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 16, as some OSes will ship older clang-format versions by default.
|
||||||
|
|
||||||
- In QtCreator, go to "Help > About Plugins…"
|
- In QtCreator, go to "Help > About Plugins…"
|
||||||
- Find the `Beautifier (experimental)` row (for example, by typing `beau` into the search)
|
- Find the `Beautifier (experimental)` row (for example, by typing `beau` into the search)
|
||||||
|
|
|
@ -9,9 +9,9 @@ steps:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
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-15 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main'
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install clang-format-15 ccache e2fsprogs gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build qemu-utils qemu-system-i386 unzip lld
|
sudo apt-get install clang-format-16 ccache e2fsprogs gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build qemu-utils qemu-system-i386 unzip lld
|
||||||
displayName: 'Install Dependencies'
|
displayName: 'Install Dependencies'
|
||||||
|
|
||||||
- ${{ if eq(parameters.os, 'Linux') }}:
|
- ${{ if eq(parameters.os, 'Linux') }}:
|
||||||
|
|
|
@ -28,21 +28,21 @@ fi
|
||||||
if (( ${#files[@]} )); then
|
if (( ${#files[@]} )); then
|
||||||
TOOLCHAIN_DIR=Toolchain/Local/clang/bin
|
TOOLCHAIN_DIR=Toolchain/Local/clang/bin
|
||||||
CLANG_FORMAT=false
|
CLANG_FORMAT=false
|
||||||
if command -v clang-format-15 >/dev/null 2>&1 ; then
|
if command -v clang-format-16 >/dev/null 2>&1 ; then
|
||||||
CLANG_FORMAT=clang-format-15
|
CLANG_FORMAT=clang-format-16
|
||||||
elif command -v brew >/dev/null 2>&1 && command -v "$(brew --prefix llvm@15)"/bin/clang-format >/dev/null 2>&1 ; then
|
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@15)"/bin/clang-format
|
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 ' 15.' ; then
|
elif command -v $TOOLCHAIN_DIR/clang-format >/dev/null 2>&1 && $TOOLCHAIN_DIR/clang-format --version | grep -qF ' 16.' ; then
|
||||||
CLANG_FORMAT=$TOOLCHAIN_DIR/clang-format
|
CLANG_FORMAT=$TOOLCHAIN_DIR/clang-format
|
||||||
elif command -v clang-format >/dev/null 2>&1 ; then
|
elif command -v clang-format >/dev/null 2>&1 ; then
|
||||||
CLANG_FORMAT=clang-format
|
CLANG_FORMAT=clang-format
|
||||||
if ! "${CLANG_FORMAT}" --version | awk '{ if (substr($NF, 1, index($NF, ".") - 1) < 15) exit 1; }'; then
|
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 15 or later."
|
echo "You are using '$("${CLANG_FORMAT}" --version)', which appears to not be clang-format 16 or later."
|
||||||
echo "It is very likely that the resulting changes are not what you wanted."
|
echo "It is very likely that the resulting changes are not what you wanted."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "clang-format-15 is not available, but C or C++ files need linting! Either skip this script, or install clang-format-15."
|
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 15 or later.)"
|
echo "(If you install a package 'clang-format', please make sure it's version 16 or later.)"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue