Add clang-tidy target. Closes #2383.
parent
5a52983f16
commit
d3b389f349
7 changed files with 77 additions and 1 deletions
@ -0,0 +1,8 @@ |
|||||||
|
## Clang-tidy target |
||||||
|
|
||||||
|
If `clang-tidy` is installed and the project's source root contains a |
||||||
|
`.clang-tidy` (or `_clang-tidy`) file, Meson will automatically define |
||||||
|
a `clang-tidy` target that runs Clang-Tidy on all source files. |
||||||
|
|
||||||
|
If you have defined your own `clang-tidy` target, Meson will not |
||||||
|
generate its own target. |
@ -0,0 +1,38 @@ |
|||||||
|
# Copyright 2019 The Meson development team |
||||||
|
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at |
||||||
|
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
|
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
|
||||||
|
import pathlib |
||||||
|
import subprocess |
||||||
|
from concurrent.futures import ThreadPoolExecutor |
||||||
|
|
||||||
|
from ..compilers import lang_suffixes |
||||||
|
|
||||||
|
def clangformat(srcdir_name, builddir_name): |
||||||
|
srcdir = pathlib.Path(srcdir_name) |
||||||
|
suffixes = set(lang_suffixes['c']).union(set(lang_suffixes['cpp'])) |
||||||
|
suffixes.add('h') |
||||||
|
futures = [] |
||||||
|
with ThreadPoolExecutor() as e: |
||||||
|
for f in (x for suff in suffixes for x in srcdir.glob('**/*.' + suff)): |
||||||
|
strf = str(f) |
||||||
|
if strf.startswith(builddir_name): |
||||||
|
continue |
||||||
|
futures.append(e.submit(subprocess.check_call, ['clang-tidy', '-p', builddir_name, strf])) |
||||||
|
[x.result() for x in futures] |
||||||
|
return 0 |
||||||
|
|
||||||
|
def run(args): |
||||||
|
srcdir_name = args[0] |
||||||
|
builddir_name = args[1] |
||||||
|
return clangformat(srcdir_name, builddir_name) |
@ -0,0 +1 @@ |
|||||||
|
Checks: '-*,modernize-use-bool-literals' |
@ -0,0 +1,7 @@ |
|||||||
|
#include<cstdio> |
||||||
|
|
||||||
|
int main(int, char**) { |
||||||
|
bool intbool = 1; |
||||||
|
printf("Intbool is %d\n", (int)intbool); |
||||||
|
return 0; |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
project('clangtidytest', 'cpp', default_options: 'cpp_std=c++14') |
||||||
|
|
||||||
|
executable('cttest', 'cttest.cpp') |
Loading…
Reference in new issue