From 7cce6e64441053915ddc41035eae8c9819bbe566 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 26 Nov 2020 19:07:52 +0100 Subject: Github action: add a clang static analyzer job --- .github/workflows/clang_static_analyzer.yml | 15 ++++++++ .github/workflows/clang_static_analyzer/start.sh | 44 ++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 .github/workflows/clang_static_analyzer.yml create mode 100755 .github/workflows/clang_static_analyzer/start.sh diff --git a/.github/workflows/clang_static_analyzer.yml b/.github/workflows/clang_static_analyzer.yml new file mode 100644 index 00000000..47dfc4ad --- /dev/null +++ b/.github/workflows/clang_static_analyzer.yml @@ -0,0 +1,15 @@ +name: CLang Static Analyzer + +on: [push, pull_request] + +jobs: + + clang_static_analyzer: + runs-on: ubuntu-16.04 + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Run + run: .github/workflows/clang_static_analyzer/start.sh diff --git a/.github/workflows/clang_static_analyzer/start.sh b/.github/workflows/clang_static_analyzer/start.sh new file mode 100755 index 00000000..7063c42f --- /dev/null +++ b/.github/workflows/clang_static_analyzer/start.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +set -e + +DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --no-install-recommends \ + autoconf automake libtool g++ make sqlite3 libsqlite3-dev libtiff-dev libcurl4-openssl-dev jq + +CLANG_LLVM=clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04 +wget http://releases.llvm.org/9.0.0/$CLANG_LLVM.tar.xz +tar xJf $CLANG_LLVM.tar.xz +mv $CLANG_LLVM clang+llvm-9 + +# prepare build files +./autogen.sh + +NPROC=$(nproc) +echo "NPROC=${NPROC}" +export MAKEFLAGS="-j ${NPROC}" + +export PATH=$PWD/clang+llvm-9/bin:$PATH +CXXFLAGS="-std=c++11" scan-build -o scanbuildoutput -plist -v ./configure +rm -rf scanbuildoutput +TOPDIR=$PWD +scan-build -o $TOPDIR/scanbuildoutput -sarif -v -enable-checker alpha.unix.cstring.OutOfBounds,alpha.unix.cstring.BufferOverlap,optin.cplusplus.VirtualCall,optin.cplusplus.UninitializedObject make + +rm -f filtered_scanbuild.txt +files=$(find scanbuildoutput -name "*.sarif") +for f in $files; do + jq '.runs[].results[] | (if .locations[].physicalLocation.fileLocation.uri | (contains("_generated_parser") ) then empty else { "uri": .locations[].physicalLocation.fileLocation.uri, "msg": .message.text, "location": .codeFlows[-1].threadFlows[-1].locations[-1] } end)' < $f > tmp.txt + if [ -s tmp.txt ]; then + echo "Errors from $f: " + cat $f + echo "" + cat tmp.txt >> filtered_scanbuild.txt + fi +done +if [ -s filtered_scanbuild.txt ]; then + echo "" + echo "" + echo "========================" + echo "Summary of errors found:" + cat filtered_scanbuild.txt + /bin/false +fi -- cgit v1.2.3 From eeec780b20c44960f3b2fed817e00bf6c23f0bec Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 26 Nov 2020 19:08:34 +0100 Subject: Travis-CI: remove CSA job --- .travis.yml | 7 ------- travis/csa/after_success.sh | 5 ----- travis/csa/before_install.sh | 13 ------------- travis/csa/install.sh | 34 ---------------------------------- 4 files changed, 59 deletions(-) delete mode 100755 travis/csa/after_success.sh delete mode 100755 travis/csa/before_install.sh delete mode 100755 travis/csa/install.sh diff --git a/.travis.yml b/.travis.yml index c2f2b69d..a258ee2e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -82,13 +82,6 @@ matrix: - BUILD_NAME=linux_generic - DETAILS="linux, arm64" - - os: linux - compiler: gcc - dist: xenial - env: - - BUILD_NAME=csa - - DETAILS="CLang Static Analyzer" - allow_failures: - env: BUILD_NAME=mingw32 diff --git a/travis/csa/after_success.sh b/travis/csa/after_success.sh deleted file mode 100755 index 9618f673..00000000 --- a/travis/csa/after_success.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -set -e - -# nothing diff --git a/travis/csa/before_install.sh b/travis/csa/before_install.sh deleted file mode 100755 index 0ebc94fb..00000000 --- a/travis/csa/before_install.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -e - -./travis/before_install_apt.sh -./travis/before_install_pip.sh - -sudo apt-get install -qq sqlite3 libsqlite3-dev libtiff-dev libcurl4-openssl-dev - -CLANG_LLVM=clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04 -wget http://releases.llvm.org/9.0.0/$CLANG_LLVM.tar.xz -tar xJf $CLANG_LLVM.tar.xz -mv $CLANG_LLVM clang+llvm-9 diff --git a/travis/csa/install.sh b/travis/csa/install.sh deleted file mode 100755 index 349afcb1..00000000 --- a/travis/csa/install.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -set -e - -# prepare build files -./autogen.sh - -export PATH=$PWD/clang+llvm-9/bin:$PATH -CXXFLAGS="-std=c++11" scan-build -o scanbuildoutput -plist -v ./configure -rm -rf scanbuildoutput -TOPDIR=$PWD -scan-build -o $TOPDIR/scanbuildoutput -sarif -v -enable-checker alpha.unix.cstring.OutOfBounds,alpha.unix.cstring.BufferOverlap,optin.cplusplus.VirtualCall,optin.cplusplus.UninitializedObject make -j2 - -sudo apt-get install jq - -rm -f filtered_scanbuild.txt -files=$(find scanbuildoutput -name "*.sarif") -for f in $files; do - jq '.runs[].results[] | (if .locations[].physicalLocation.fileLocation.uri | (contains("_generated_parser") ) then empty else { "uri": .locations[].physicalLocation.fileLocation.uri, "msg": .message.text, "location": .codeFlows[-1].threadFlows[-1].locations[-1] } end)' < $f > tmp.txt - if [ -s tmp.txt ]; then - echo "Errors from $f: " - cat $f - echo "" - cat tmp.txt >> filtered_scanbuild.txt - fi -done -if [ -s filtered_scanbuild.txt ]; then - echo "" - echo "" - echo "========================" - echo "Summary of errors found:" - cat filtered_scanbuild.txt - /bin/false -fi -- cgit v1.2.3