checkstyle: improve speed by checking only recently changed files 97/2697/3
authorDamjan Marion <[email protected]>
Wed, 7 Sep 2016 11:10:50 +0000 (13:10 +0200)
committerDamjan Marion <[email protected]>
Wed, 7 Sep 2016 13:50:36 +0000 (15:50 +0200)
This change makes checkstyle much faster by checking only recently
changed files. It only checks files changed in last commit and files
which are localy modified. Old behavior is preserved by specifying
argument "--full" when invoking script.

In addition "make checkstyle" and "make "fixstyle" actions are added
to the top-level Makefile.

Change-Id: I7d86225bd282f32ee508e7f52692a3778ac8dcda
Signed-off-by: Damjan Marion <[email protected]>
Makefile
build-root/scripts/checkstyle.sh

index f218cb0..b3bd8d3 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -80,6 +80,8 @@ help:
        @echo " ctags               - (re)generate ctags database"
        @echo " gtags               - (re)generate gtags database"
        @echo " cscope              - (re)generate cscope database"
+       @echo " checkstyle          - check coding style"
+       @echo " fixstyle            - fix coding style"
        @echo " doxygen             - (re)generate documentation"
        @echo " bootstrap-doxygen   - setup Doxygen dependencies"
        @echo " wipe-doxygen        - wipe all generated documentation"
@@ -233,6 +235,11 @@ gtags: ctags
 cscope: cscope.files
        @cscope -b -q -v
 
+checkstyle:
+       @build-root/scripts/checkstyle.sh
+
+fixstyle:
+       @build-root/scripts/checkstyle.sh --fix
 
 #
 # Build the documentation
index df72cdb..6012967 100755 (executable)
@@ -3,14 +3,29 @@
 VPP_DIR=`dirname $0`/../../
 EXIT_CODE=0
 FIX="0"
+FULL="0"
 CHECKSTYLED_FILES=""
 UNCHECKSTYLED_FILES=""
 
 # If the user provides --fix, then actually fix things
 # Note: this is meant for use outside of the CI Jobs, by users cleaning things up
 
-if [ $# -gt 0 ] && [ ${1} == '--fix' ]; then
-    FIX="1"
+while true; do
+       case ${1} in
+               --fix)
+                       FIX="1"
+                       ;;
+               --full)
+                       FULL="1"
+                       ;;
+       esac
+       shift || break
+done
+
+if [ "${FULL}" == "1" ]; then
+       FILELIST=$(git ls-tree -r HEAD --name-only)
+else
+       FILELIST=$((git diff HEAD~1.. --name-only; git ls-files -m ) | sort -u)
 fi
 
 # Check to make sure we have indent.  Exit if we don't with an error message, but
@@ -24,7 +39,7 @@ indent --version
 
 cd ${VPP_DIR}
 git status
-for i in `git ls-tree -r HEAD --name-only`;do
+for i in ${FILELIST}; do
     if [ -f ${i} ] && [ ${i} != "build-root/scripts/checkstyle.sh" ] && [ ${i} != "build-root/emacs-lisp/fix-coding-style.el" ]; then
         grep -q "fd.io coding-style-patch-verification: ON" ${i}
         if [ $? == 0 ]; then