mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
automation: Add container and build jobs to run cppcheck analysis
Add a debian container with cppcheck installation routine inside, capable of performing cppcheck analysis on Xen-only build including cross-builds for arm32 and x86_64. Populate build jobs making use of that container to run cppcheck analysis to produce a text report (xen-cppcheck.txt) containing the list of all the findings. This patch does not aim at performing any sort of bisection. Cppcheck is imperfect and for now, our goal is to at least be aware of its reports, so that we can compare them with the ones produced by better tools and to be able to see how these reports change as a result of further infrastructure improvements (e.g. exception list, rules exclusion). Signed-off-by: Michal Orzel <michal.orzel@amd.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
1 parent
6342f96689
commit
bfc3780f23
3 files changed
+106
-1
No files matched your search
@@ -0,0 +1,53 @@
|
||||
FROM arm64v8/debian:unstable AS builder
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV CPPCHECK_VERSION=2.7
|
||||
ENV USER root
|
||||
|
||||
# dependencies for cppcheck build
|
||||
RUN apt-get update && \
|
||||
apt-get --quiet --yes install \
|
||||
curl \
|
||||
build-essential \
|
||||
python-is-python3 \
|
||||
libpcre3-dev
|
||||
|
||||
RUN mkdir /build
|
||||
WORKDIR /build
|
||||
|
||||
# cppcheck release build (see cppcheck readme.md)
|
||||
RUN curl -fsSLO https://github.com/danmar/cppcheck/archive/"$CPPCHECK_VERSION".tar.gz && \
|
||||
tar xvzf "$CPPCHECK_VERSION".tar.gz && \
|
||||
cd cppcheck-"$CPPCHECK_VERSION" && \
|
||||
make install -j$(nproc) \
|
||||
MATCHCOMPILER=yes \
|
||||
FILESDIR=/usr/share/cppcheck \
|
||||
HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
|
||||
|
||||
FROM arm64v8/debian:unstable
|
||||
COPY --from=builder /usr/bin/cppcheck /usr/bin/cppcheck
|
||||
COPY --from=builder /usr/share/cppcheck /usr/share/cppcheck
|
||||
|
||||
LABEL maintainer.name="The Xen Project" \
|
||||
maintainer.email="xen-devel@lists.xenproject.org"
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV USER root
|
||||
|
||||
RUN mkdir /build
|
||||
WORKDIR /build
|
||||
|
||||
# dependencies for cppcheck analysis including Xen-only build/cross-build
|
||||
RUN apt-get update && \
|
||||
apt-get --quiet --yes install \
|
||||
build-essential \
|
||||
python-is-python3 \
|
||||
libpcre3-dev \
|
||||
flex \
|
||||
bison \
|
||||
gcc-arm-linux-gnueabihf \
|
||||
gcc-x86-64-linux-gnu \
|
||||
&& \
|
||||
apt-get autoremove -y && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*
|
||||
@@ -7,6 +7,7 @@
|
||||
paths:
|
||||
- binaries/
|
||||
- xen-config
|
||||
- xen-cppcheck.txt
|
||||
- '*.log'
|
||||
- '*/*.log'
|
||||
when: always
|
||||
@@ -235,6 +236,23 @@
|
||||
tags:
|
||||
- x86_64
|
||||
|
||||
.x86-64-cross-build-tmpl:
|
||||
<<: *build
|
||||
variables:
|
||||
XEN_TARGET_ARCH: x86_64
|
||||
tags:
|
||||
- arm64
|
||||
|
||||
.x86-64-cross-build:
|
||||
extends: .x86-64-cross-build-tmpl
|
||||
variables:
|
||||
debug: n
|
||||
|
||||
.gcc-x86-64-cross-build:
|
||||
extends: .x86-64-cross-build
|
||||
variables:
|
||||
<<: *gcc
|
||||
|
||||
# Jobs below this line
|
||||
|
||||
archlinux-gcc:
|
||||
@@ -672,6 +690,31 @@ yocto-qemux86-64:
|
||||
variables:
|
||||
YOCTO_BOARD: qemux86-64
|
||||
|
||||
# Cppcheck analysis jobs
|
||||
|
||||
debian-unstable-gcc-cppcheck:
|
||||
extends: .gcc-x86-64-cross-build
|
||||
variables:
|
||||
CONTAINER: debian:unstable-cppcheck
|
||||
CROSS_COMPILE: /usr/bin/x86_64-linux-gnu-
|
||||
CPPCHECK: y
|
||||
HYPERVISOR_ONLY: y
|
||||
|
||||
debian-unstable-gcc-arm32-cppcheck:
|
||||
extends: .gcc-arm32-cross-build
|
||||
variables:
|
||||
CONTAINER: debian:unstable-cppcheck
|
||||
CROSS_COMPILE: /usr/bin/arm-linux-gnueabihf-
|
||||
CPPCHECK: y
|
||||
HYPERVISOR_ONLY: y
|
||||
|
||||
debian-unstable-gcc-arm64-cppcheck:
|
||||
extends: .gcc-arm64-build
|
||||
variables:
|
||||
CONTAINER: debian:unstable-cppcheck
|
||||
CPPCHECK: y
|
||||
HYPERVISOR_ONLY: y
|
||||
|
||||
## Test artifacts common
|
||||
|
||||
.test-jobs-artifact-common:
|
||||
|
||||
@@ -38,7 +38,16 @@ cp xen/.config xen-config
|
||||
# Directory for the artefacts to be dumped into
|
||||
mkdir binaries
|
||||
|
||||
if [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
|
||||
if [[ "${CPPCHECK}" == "y" ]] && [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
|
||||
# Cppcheck analysis invokes Xen-only build.
|
||||
# Known limitation: cppcheck generates inconsistent reports when running
|
||||
# in parallel mode, therefore do not specify -j<n>.
|
||||
xen/scripts/xen-analysis.py --run-cppcheck --cppcheck-misra
|
||||
|
||||
# Preserve artefacts
|
||||
cp xen/xen binaries/xen
|
||||
cp xen/cppcheck-report/xen-cppcheck.txt xen-cppcheck.txt
|
||||
elif [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
|
||||
# Xen-only build
|
||||
make -j$(nproc) xen
|
||||
|
||||
|
||||