Преглед на файлове

Merge pull request #120 from linD026/master

CI: Introduce GCC static analysis
Jim Huang преди 3 години
родител
ревизия
1cb35ac976
променени са 3 файла, в които са добавени 30 реда и са изтрити 2 реда
  1. 22 0
      .ci/static-analysis.sh
  2. 1 0
      .github/workflows/status-check.yaml
  3. 7 2
      examples/Makefile

+ 22 - 0
.ci/static-analysis.sh

@@ -60,6 +60,28 @@ function do_sparse()
     make -C examples clean
 }
 
+function do_gcc()
+{
+    local GCC=$(which gcc-10)
+    if [ $? -ne 0 ]; then
+        echo "[!] gcc-10 is not installed. Failed to run static analysis with GCC." >&2
+        exit 1
+    fi
+
+    make -C examples CONFIG_STATUS_CHECK_GCC=y STATUS_CHECK_GCC=$GCC 2> gcc.log
+
+    local WARNING_COUNT=$(cat gcc.log | egrep -c " warning:" )
+    local ERROR_COUNT=$(cat gcc.log | egrep -c " error:" )
+    local COUNT=`expr $WARNING_COUNT + $ERROR_COUNT`
+    if [ $COUNT -gt 0 ]; then
+        echo "gcc failed: $WARNING_COUNT warning(s), $ERROR_COUNT error(s)"
+        cat gcc.log
+        exit 1
+    fi
+    make -C examples CONFIG_STATUS_CHECK_GCC=y STATUS_CHECK_GCC=$GCC clean
+}
+
 do_cppcheck
 do_sparse
+do_gcc
 exit 0

+ 1 - 0
.github/workflows/status-check.yaml

@@ -18,6 +18,7 @@ jobs:
         run: |
             sudo apt-get install -q -y clang-format-11
             sudo apt-get install -q -y cppcheck
+            sudo apt-get install -q -y gcc-10
             .ci/check-format.sh
             .ci/static-analysis.sh
             .ci/build-n-run.sh

+ 7 - 2
examples/Makefile

@@ -32,11 +32,16 @@ obj-m += ioctl.o
 
 PWD := $(CURDIR)
 
+ifeq ($(CONFIG_STATUS_CHECK_GCC),y)
+CC=$(STATUS_CHECK_GCC)
+ccflags-y += -fanalyzer
+endif
+
 all:
-	$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
+	$(MAKE) -C /lib/modules/$(shell uname -r)/build CC=$(CC) M=$(PWD) modules
 
 clean:
-	$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
+	$(MAKE) -C /lib/modules/$(shell uname -r)/build CC=$(CC) M=$(PWD) clean
 	$(RM) other/cat_noblock *.plist
 
 indent: