diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6e7ae1fbf..f26006d87 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,6 +5,7 @@ repos: - id: yapf files: \.py$ exclude: (?=third_party).*(\.py)$ + - repo: https://github.com/pre-commit/pre-commit-hooks rev: a11d9314b22d8f8c7556443875b731ef05965464 hooks: @@ -31,6 +32,7 @@ repos: - --builtins=G,request - --jobs=1 exclude: (?=third_party).*(\.py)$ + - repo : https://github.com/Lucas-C/pre-commit-hooks rev: v1.0.1 hooks: @@ -42,6 +44,7 @@ repos: files: \.md$ - id: remove-tabs files: \.md$ + - repo: local hooks: - id: clang-format @@ -51,14 +54,26 @@ repos: language: system files: \.(c|cc|cxx|cpp|cu|h|hpp|hxx|cuh|proto)$ exclude: (?=speechx/speechx/kaldi|speechx/patch|speechx/tools/fstbin|speechx/tools/lmbin).*(\.cpp|\.cc|\.h|\.py)$ + #- id: copyright_checker # name: copyright_checker # entry: python .pre-commit-hooks/copyright-check.hook # language: system # files: \.(c|cc|cxx|cpp|cu|h|hpp|hxx|proto|py)$ # exclude: (?=third_party|pypinyin|speechx/speechx/kaldi|speechx/patch|speechx/tools/fstbin|speechx/tools/lmbin).*(\.cpp|\.cc|\.h|\.py)$ + - repo: https://github.com/asottile/reorder_python_imports rev: v2.4.0 hooks: - id: reorder-python-imports exclude: (?=third_party).*(\.py)$ + +- repo: local + hooks: + - id: cpplint-cpp-source + name: cpplint + description: Check C++ code style using cpplint.py. + entry: bash .pre-commit-hooks/cpplint.hook + language: system + files: \.(c|cc|cxx|cpp|cu|h|hpp|hxx)$ + exclude: (?=speechx/speechx/kaldi|speechx/patch|speechx/tools/fstbin|speechx/tools/lmbin).*(\.cpp|\.cc|\.h|\.py)$ \ No newline at end of file diff --git a/.pre-commit-hooks/cpplint.hook b/.pre-commit-hooks/cpplint.hook new file mode 100644 index 000000000..316b0bace --- /dev/null +++ b/.pre-commit-hooks/cpplint.hook @@ -0,0 +1,60 @@ +#!/bin/bash + +#TOTAL_ERRORS=0 +#echo "HAHAHAHAHHA" +#exit 5 +# +#files=$( +# +#if [[ ! $TRAVIS_BRANCH ]]; then +# # install cpplint on local machine. +# if [[ ! $(which cpplint) ]]; then +# pip install cpplint +# fi +# # diff files on local machine. +# files=$(git diff --cached --name-status | awk 'Extra open brace or missing close brace2}') +#else +# # diff files between PR and latest commit on Travis CI. +# branch_ref=(gitrev−parse"TRAVIS_BRANCH") +# head_ref=$(git rev-parse HEAD) +# files=(gitdiff−−name−statusbranch_ref $head_ref | awk 'Extra open brace or missing close brace2}') +#fi +## The trick to remove deleted files: https://stackoverflow.com/a/2413151 +#for file in $files; do +# echo $file +# if [[ $file =~ ^(patches/.*) ]]; then +# continue; +# else +# cpplint --filter=-readability/fn_size $file; +# TOTAL_ERRORS=(exprTOTAL_ERRORS + $?); +# fi +#done +# +#exit $TOTAL_ERRORS + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=664cc9ca631283d0f38b8feb6b52b68152d0f63d +fi + +# Redirect output to stderr. +exec 1>&2 + +cpplint=cpplint +sum=0 +filters='-build/include_order,-build/namespaces,-legal/copyright,-runtime/references,-build/include_what_you_use' + +# for cpp +for file in $(git diff-index --name-status $against -- | grep -E '\.[ch](pp)?$' | awk '{print $2}'); do + $cpplint --filter=$filters $file + sum=$(expr ${sum} + $?) +done + +if [ ${sum} -eq 0 ]; then + exit 0 +else + exit 1 +fi \ No newline at end of file