I have the following directory structure
├── .clang-format
├── .clang-tidy
├── external
├── scripts
└── source
For my clang tidy execution I want to only include headers from the source
folder and exclude ones from external
. The following setting does not work for either match HeaderFilterRegex: '^(source)+(?!.*external).*'
The format of the regex is correct
In the .clang-tidy
file If I only include HeaderFilterRegex: '^(?!.*external).*'
it excludes the external
folder but doesn't include the source
header files
and similarly if I only include this check HeaderFilterRegex: '(src/)'
it doesn't exclude the external files.
Update
Ok this seems like it is related to the fact clang uses Posix ERE regex flavor (thanks @pablo285) and this does not support negative lookahead. I would have thought this was a fairly standard requirement for using clang-tidy, excluding certain folders from the analysis.