summaryrefslogtreecommitdiffstats
path: root/ci_scripts/pre-commit.sh
diff options
context:
space:
mode:
authoreconwar <conor.ward@est.tech>2019-04-26 14:57:47 +0000
committereconwar <conor.ward@est.tech>2019-04-26 14:57:47 +0000
commita723c89c6268739d134e1dd9b90b76bd1179c69c (patch)
tree6cdfd4a3063042422b897b5425c2da4d495f9185 /ci_scripts/pre-commit.sh
parentbceb18df30982e2ace538baf5c49336fe0e45b0a (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-xci_scripts/pre-commit.sh56
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