diff options
author | Alexander Polcyn <apolcyn@google.com> | 2017-11-13 20:48:20 -0800 |
---|---|---|
committer | Alexander Polcyn <apolcyn@google.com> | 2017-11-13 20:48:20 -0800 |
commit | 16ba80c850567c351a425bc9c14c84ed23220b86 (patch) | |
tree | cd7af33dd97e112a59135b775ac7b8c5d5a453d9 /tools | |
parent | 248c4f5848c8761fc16352e1f2f1e6d047780b4e (diff) | |
parent | b0bad8f3864dc9c8745736fe68efe513b2b84932 (diff) |
Merge remote-tracking branch 'upstream/master' into pass_args_to_tsi
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/distrib/run_clang_tidy.py | 70 | ||||
-rw-r--r-- | tools/dockerfile/test/sanity/Dockerfile | 4 | ||||
-rwxr-xr-x | tools/run_tests/sanity/check_clang_tidy.sh | 21 | ||||
-rw-r--r-- | tools/run_tests/sanity/sanity_tests.yaml | 3 |
4 files changed, 97 insertions, 1 deletions
diff --git a/tools/distrib/run_clang_tidy.py b/tools/distrib/run_clang_tidy.py new file mode 100755 index 0000000000..d002a04de9 --- /dev/null +++ b/tools/distrib/run_clang_tidy.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python2.7 +# Copyright 2017 gRPC authors. +# +# 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 sys +import os +import subprocess +import argparse +import multiprocessing + +sys.path.append( + os.path.join( + os.path.dirname(sys.argv[0]), '..', 'run_tests', 'python_utils')) +import jobset + +GRPC_CHECKS = [ + 'modernize-use-nullptr', +] + +extra_args = [ + '-x', + 'c++', + '-std=c++11', +] +with open('.clang_complete') as f: + for line in f: + line = line.strip() + if line.startswith('-I'): + extra_args.append(line) + +clang_tidy = os.environ.get('CLANG_TIDY', 'clang-tidy') + +argp = argparse.ArgumentParser(description='Run clang-tidy against core') +argp.add_argument('files', nargs='+', help='Files to tidy') +argp.add_argument('--fix', dest='fix', action='store_true') +argp.add_argument('-j', '--jobs', type=int, default=multiprocessing.cpu_count(), + help='Number of CPUs to use') +argp.set_defaults(fix=False) +args = argp.parse_args() + +cmdline = [ + clang_tidy, + '--checks=-*,%s' % ','.join(GRPC_CHECKS), + '--warnings-as-errors=%s' % ','.join(GRPC_CHECKS) +] + [ + '--extra-arg-before=%s' % arg + for arg in extra_args +] + +if args.fix: + cmdline.append('--fix') + +jobs = [] +for filename in args.files: + jobs.append(jobset.JobSpec(cmdline + [filename], + shortname=filename, + ))#verbose_success=True)) + +jobset.run(jobs, maxjobs=args.jobs) diff --git a/tools/dockerfile/test/sanity/Dockerfile b/tools/dockerfile/test/sanity/Dockerfile index da663d5686..967e813b85 100644 --- a/tools/dockerfile/test/sanity/Dockerfile +++ b/tools/dockerfile/test/sanity/Dockerfile @@ -68,6 +68,10 @@ RUN pip install --upgrade pip==9.0.1 RUN pip install virtualenv RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0 +#================= +# C++ dependencies +RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean + #======================== # Sanity test dependencies RUN apt-get update && apt-get install -y \ diff --git a/tools/run_tests/sanity/check_clang_tidy.sh b/tools/run_tests/sanity/check_clang_tidy.sh new file mode 100755 index 0000000000..42ab511a20 --- /dev/null +++ b/tools/run_tests/sanity/check_clang_tidy.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# Copyright 2017 gRPC authors. +# +# 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. + +set -e + +make buildtests \ + -j `python -c 'import multiprocessing; print multiprocessing.cpu_count()'` +find src/core src/cpp test/core test/cpp -name '*.h' -or -name '*.cc' | \ + xargs tools/distrib/run_clang_tidy.py $* diff --git a/tools/run_tests/sanity/sanity_tests.yaml b/tools/run_tests/sanity/sanity_tests.yaml index 4bc4b7c56f..3ca5c1b6c0 100644 --- a/tools/run_tests/sanity/sanity_tests.yaml +++ b/tools/run_tests/sanity/sanity_tests.yaml @@ -17,4 +17,5 @@ - script: tools/distrib/pylint_code.sh - script: tools/distrib/yapf_code.sh - script: tools/distrib/python/check_grpcio_tools.py - +- script: tools/run_tests/sanity/check_clang_tidy.sh + cpu_cost: 1000 |