diff options
author | econwar <conor.ward@est.tech> | 2019-04-26 14:57:47 +0000 |
---|---|---|
committer | econwar <conor.ward@est.tech> | 2019-04-26 14:57:47 +0000 |
commit | a723c89c6268739d134e1dd9b90b76bd1179c69c (patch) | |
tree | 6cdfd4a3063042422b897b5425c2da4d495f9185 /ci_scripts/pre-commit.sh | |
parent | bceb18df30982e2ace538baf5c49336fe0e45b0a (diff) |
Add syntax check before pushing code
Checks whole file (with changes) for code style violations
If you can't fix these violations you can use the --no-verify option
Issue-ID: DMAAP-1173
Change-Id: If97f90685836cec7fa3febb450f6f8ce844272f3
Signed-off-by: econwar <conor.ward@est.tech>
Diffstat (limited to 'ci_scripts/pre-commit.sh')
-rwxr-xr-x | ci_scripts/pre-commit.sh | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/ci_scripts/pre-commit.sh b/ci_scripts/pre-commit.sh new file mode 100755 index 00000000..636f8ff3 --- /dev/null +++ b/ci_scripts/pre-commit.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +# +# ============LICENSE_START======================================================= +# Copyright (C) 2019 Nordix Foundation. +# ================================================================================ +# 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. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +# +# Pre-commit hook for running checkstyle on changed Java sources +# +# To use this you need: +# 1. Checkstyle's jar file downloaded *version is important checkstyle-8.13-all.jar +# 2. To configure git: +# * git config --add checkstyle.jar <location_of_jar> +# 3. Copy this file to your .git/hooks directory as pre-commit +# +# Now, when you commit, you will be disallowed from doing so +# until you pass your checkstyle checks. + +changed_files=" " +for file in $(git diff --cached --name-status | grep -E '\.(java)$' | grep -vE '^D' | awk '{print $2}') +do + changed_files+="$file " +done + +printf "Using checkstyle sheet " +checkstlye_jar_command='git config --get checkstyle.jar' + +if ! ($checkstlye_jar_command) +then + printf "You must configure checkstyle in your git config" + exit 1 +fi + +checkstyle_warnings=$(java -jar $($checkstlye_jar_command) -c ci_scripts/onap-style-java.xml $changed_files | grep WARN) +if [ $? == 0 ] +then + printf "\nWarnings found\n\n" + echo "$checkstyle_warnings" + printf "\n###############################################################\n\nFix warnings before committing\n\n" + exit 1 +else + printf "\nCode checkstyle passed.\n" +fi |