From a723c89c6268739d134e1dd9b90b76bd1179c69c Mon Sep 17 00:00:00 2001 From: econwar Date: Fri, 26 Apr 2019 14:57:47 +0000 Subject: 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 --- ci_scripts/pre-commit.sh | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 ci_scripts/pre-commit.sh (limited to 'ci_scripts/pre-commit.sh') 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 +# 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 -- cgit 1.2.3-korg