Feature #1993
Ide/Builders: U++ builder for clang-tidy
Status: | Patch ready | Start date: | 10/15/2019 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | Miroslav Fidler | % Done: | 0% | |
Category: | IDE | Spent time: | - | |
Target version: | - |
Description
There is clang-tidy tool available as part of LLVM/Clang.
The clang-tidy has following usage format (for advanced use):
clang-tidy [options] <source0> [... <sourceN>] [-- [compiler options]]
Where "options" is clang-tidy options, "source0" is some C/C++ source code file(s), "--" is some delimiter between clang-tidy and compiler options, such as includes (-I) and defines (-D).
For example:
clang-tidy --quiet -header-filter=".*" -checks="-*,modernize-use-override" test.cpp
may use modernize-use-override checker for test.cpp file.
Possible to apply available fixes with using "-fix" clang-tidy option:
clang-tidy --quiet -header-filter=".*" -checks="-*,modernize-use-override" -fix test.cpp
Some command to get list of available checkers:
clang-tidy -list-checks -checks="*"
Possible to use SCRIPT builder for some build method for clang-tidy.
But also possible to implement this as some kind of U++ builder (which also may support BLITZ build).
Therefore, I propose to create U++ builder for clang-tidy.
Some patch attached. Based on GccBuilder::BuildPackage method.
The clang-tidy options possible to use as part of "Compiler name" for build method. So, I also extended width of EditString for compiler variable in BuildMethodsDefaultBuilderSetupLayout layout for uppsrc/ide/ide.lay file.
History
#1 Updated by Sender Ghost over 5 years ago
I noticed, that for proper usage there is also a need to specify default include compiler path(s) for "INCLUDE directories" or as "-isystem path" for "Common options" in build method.
Possible to get list of default compiler paths with using following command (replace /dev/null for other empty file on Windows):
clang++ -v -fsyntax-only -x c++ /dev/null
and search between "#include <...> search starts here:" and "End of search list.".
Maybe this is some kind of feature, if use compiler options after "--" delimiter.
Overall, this may be simple to configure, based on error(s) output.
#2 Updated by Sender Ghost over 5 years ago
- File modernize-use-override_output.txt
added
- File modernize-use-override_fixes.diff
added
Attached some example for clang-tidy's modernize-use-override checker and applied fixes for uppsrc/Core directory (at 13636 revision).
Used following "Compiler name" for this build method:
clang-tidy --quiet -header-filter=".*" -checks="-*,modernize-use-override" -fix
#3 Updated by Sender Ghost over 5 years ago
Also need to note, that I used 1 HYDRA thread for IDE settings, when using "-fix" option for clang-tidy command.
There is possibility to use --export-fixes=<filename> option for clang-tidy command, which may be used for clang-apply-replacements tool. But path for <filename> should be unique, otherwise its contents may be overwritten after new fixes (e.g. if use "Build package" for some U++ package, instead of "Compile" for some file).
#4 Updated by Sender Ghost over 5 years ago
- Status changed from New to Patch ready
#5 Updated by Sender Ghost about 5 years ago
- File deleted (
uppsrc_ide.diff)
#6 Updated by Sender Ghost about 5 years ago
- File uppsrc_ide_r13969.diff added
Updated patch after 13968 revision changes.
#7 Updated by Sender Ghost about 5 years ago
- File deleted (
uppsrc_ide_r13969.diff)
#8 Updated by Sender Ghost about 5 years ago
- File uppsrc_ide_r14075.diff
added
Updated patch after 14075 revision changes. Removed previously proposed changes for uppsrc/ide/ide.lay file.