Repository: incubator-impala Updated Branches: refs/heads/master 6c992f97f -> 2c07ca3aa
IMPALA-3632: Add script for runnig cppclean over the BE code. This patch adds a script bin/cppclean.sh that runs cppclean over the BE code and writes the output to stdout. cppclean is a tool for detecting various issues with C++ code: https://github.com/myint/cppclean To simplify the above step this change also modifies CMakeLists.txt to allow dumping of all include paths to a file, like this: cmake -DDUMP_INCLUDE_PATHS=output_file.txt Change-Id: I5cd064344bdf47d77058fb570f034bb324308103 Reviewed-on: http://gerrit.cloudera.org:8080/3237 Reviewed-by: Alex Behm <[email protected]> Tested-by: Alex Behm <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/2c07ca3a Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/2c07ca3a Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/2c07ca3a Branch: refs/heads/master Commit: 2c07ca3aac825d2dc900f3d43c72375fb5cd7c82 Parents: 6c992f9 Author: Alex Behm <[email protected]> Authored: Thu May 26 23:41:54 2016 -0700 Committer: Tim Armstrong <[email protected]> Committed: Wed Jun 8 02:30:17 2016 -0700 ---------------------------------------------------------------------- CMakeLists.txt | 9 +++++++++ bin/cppclean.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/2c07ca3a/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c09ccd..c6638bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -331,4 +331,13 @@ add_custom_target(benchmark_run COMMAND ${CMAKE_SOURCE_DIR}/be/bin/run_hive_benchmark.py ) +# Dump include paths to a file +if (DUMP_INCLUDE_PATHS) + file(REMOVE "${DUMP_INCLUDE_PATHS}") + get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) + foreach(dir ${dirs}) + file(APPEND "${DUMP_INCLUDE_PATHS}" "${dir}\n") + endforeach() +endif(DUMP_INCLUDE_PATHS) + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++") http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/2c07ca3a/bin/cppclean.sh ---------------------------------------------------------------------- diff --git a/bin/cppclean.sh b/bin/cppclean.sh new file mode 100755 index 0000000..d12156f --- /dev/null +++ b/bin/cppclean.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# +# Copyright 2016 Cloudera Inc. +# +# 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. +# +# +# Runs cppclean on the BE code and prints the results to stdout. +# +# cppclean is a tool for detecting various issues with C++ code. +# https://github.com/myint/cppclean +# +# Requires cppclean: +# sudo pip install cppclean + +. $IMPALA_HOME/bin/impala-config.sh &> /dev/null + +# Use CMake to dump the BE include paths. +INCLUDE_PATHS_FILE="/tmp/be_include_paths.txt" +pushd $IMPALA_HOME +cmake -DDUMP_INCLUDE_PATHS=$INCLUDE_PATHS_FILE &> /dev/null +popd + +# Generate include path arguments for cppclean. +INCLUDE_PATH_ARGS=" --include-path=$IMPALA_HOME/be/src" +INCLUDE_PATH_ARGS+=" --include-path=$IMPALA_HOME/be/generated-sources" +for dir in $(cat $INCLUDE_PATHS_FILE) +do + INCLUDE_PATH_ARGS+=" --include-path=$dir" +done + +cppclean ${INCLUDE_PATH_ARGS} $@ $IMPALA_HOME/be
