70 lines
2.0 KiB
YAML
70 lines
2.0 KiB
YAML
name: Clang
|
|
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
pull_request:
|
|
# The branches below must be a subset of the branches above
|
|
branches: [ master ]
|
|
schedule:
|
|
- cron: '23 13 * * 3'
|
|
|
|
jobs:
|
|
analyze:
|
|
name: Analyze
|
|
runs-on: ubuntu-20.04
|
|
|
|
steps:
|
|
- name: Install dependencies
|
|
run: sudo apt-get install clang-tools libsnmp-dev
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
|
|
# Run clang analyzer.
|
|
#
|
|
# Detect if issues were found and upload SARIF report only in that
|
|
# case, because reports without entries are not accepted. See
|
|
# https://github.com/github/codeql-action/issues/390. The analyzer
|
|
# is run twice in order to get a SARIF report as well as an exit
|
|
# status when issues are detected, as the scan-build --status-bugs
|
|
# parameter doesn't work when the output format is SARIF.
|
|
|
|
- name: Run analyzer
|
|
id: analyze
|
|
continue-on-error: true
|
|
run: |
|
|
cmake -E make_directory ${{github.workspace}}/build.clang
|
|
scan-build cmake \
|
|
-B ${{github.workspace}}/build.clang \
|
|
-S ${{github.workspace}} \
|
|
-DPNET_OPTION_SNMP=ON \
|
|
-DBUILD_TESTING=OFF \
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
scan-build \
|
|
-sarif \
|
|
-o ${{github.workspace}}/sarif \
|
|
make \
|
|
-C ${{github.workspace}}/build.clang \
|
|
-j4
|
|
cmake --build ${{github.workspace}}/build.clang --target clean
|
|
scan-build \
|
|
--status-bugs \
|
|
make \
|
|
-C ${{github.workspace}}/build.clang \
|
|
-j4
|
|
|
|
- name: Merge results if any
|
|
if: steps.analyze.outcome == 'failure'
|
|
uses: microsoft/sarif-actions@v0.1
|
|
with:
|
|
command: 'merge sarif/*/*.sarif'
|
|
|
|
- name: Upload results if any
|
|
if: steps.analyze.outcome == 'failure'
|
|
uses: github/codeql-action/upload-sarif@v1
|
|
with:
|
|
sarif_file: ${{github.workspace}}/merged.sarif
|