diff --git a/.clang-tidy b/.clang-tidy index 0887b867087..9eac06fe11e 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,3 +1,5 @@ # We use pointers to aggregates in a couple of places, intentionally. # void * would look weird. -Checks: '-bugprone-sizeof-expression' +Checks: ' + -bugprone-sizeof-expression + ' \ No newline at end of file diff --git a/doc/manual/source/development/building.md b/doc/manual/source/development/building.md index 16746383704..8a2bfb8ca55 100644 --- a/doc/manual/source/development/building.md +++ b/doc/manual/source/development/building.md @@ -291,6 +291,16 @@ To refresh pre-commit hook's config file, do the following: 1. Exit the development shell and start it again by running `nix develop`. 2. If you also use the pre-commit hook, also run `pre-commit-hooks-install` again. +#### Hooks + +##### clang-tidy + +Portions of the codebase are checked with [clang-tidy](https://clang.llvm.org/extra/clang-tidy/). + +> clang-tidy is a clang-based C++ “linter” tool. + +The current build system, Meson, by default outputs a `compile_commands.json` file which is used by all Clang tooling (clang-tidy, clangd etc..). + ### VSCode Insert the following json into your `.vscode/settings.json` file to configure `nixfmt`. diff --git a/maintainers/flake-module.nix b/maintainers/flake-module.nix index 224f4726839..a2bcee8dbe9 100644 --- a/maintainers/flake-module.nix +++ b/maintainers/flake-module.nix @@ -65,6 +65,20 @@ ''^tests/functional/lang/eval-fail-set\.nix$'' ]; }; + clang-tidy = { + enable = true; + # TODO: this requires meson to have been configured + # we could optionally wrap this in a script that runs meson first + # but for now let us keep it simple + # + # clang-tidy doesn't work well running it on multiple files + # TODO: change this to use run-clang-tidy.py + entry = "${pkgs.writeShellScript "clang-tidy-wrapper" '' + for file in "$@"; do + "${pkgs.clang-tools}/bin/clang-tidy" --fix -p ./build "$file" + done + ''}"; + }; clang-format = { enable = true; # https://github.com/cachix/git-hooks.nix/pull/532 diff --git a/src/libcmd/include/nix/cmd/repl.hh b/src/libcmd/include/nix/cmd/repl.hh index 83e39727f81..2cb46c69d74 100644 --- a/src/libcmd/include/nix/cmd/repl.hh +++ b/src/libcmd/include/nix/cmd/repl.hh @@ -11,7 +11,7 @@ struct AbstractNixRepl Bindings * autoArgs; AbstractNixRepl(ref state) - : state(state) + : state(state), autoArgs(nullptr) { } virtual ~AbstractNixRepl()