diff --git a/fpga/.gitlab-ci.yml b/fpga/.gitlab-ci.yml index c4f754035..a1e001387 100644 --- a/fpga/.gitlab-ci.yml +++ b/fpga/.gitlab-ci.yml @@ -56,3 +56,31 @@ test:unit: echo "System is currently used by: $(who)" echo "We are skipping the test. Please restart manually." fi + +test:cppcheck: + stage: test + script: + - cppcheck -j $(nproc) + --max-configs=32 + --error-exitcode=1 + --quiet + --inline-suppr + --enable=warning,performance,portability,information,missingInclude + --std=c++11 + --suppress=noValidConfiguration + -I include + -I common/include + gpu/ + src/ + lib/ + tests/unit/ | tee cppcheck.log + image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG} + dependencies: + - build:source + tags: + - docker + artifacts: + when: on_failure + paths: + - cppcheck.log + expose_as: cppcheck diff --git a/fpga/CMakeLists.txt b/fpga/CMakeLists.txt index 9fb833e73..f80c63392 100644 --- a/fpga/CMakeLists.txt +++ b/fpga/CMakeLists.txt @@ -66,7 +66,7 @@ add_subdirectory(lib) add_subdirectory(src) if(CRITERION_FOUND AND TOPLEVEL_PROJECT) - add_subdirectory(tests) + add_subdirectory(tests/unit) endif() if(NOT CMAKE_PROJECT_NAME STREQUAL "villas-node") diff --git a/fpga/Dockerfile b/fpga/Dockerfile index ab34ee66b..3dbe52ee3 100644 --- a/fpga/Dockerfile +++ b/fpga/Dockerfile @@ -50,6 +50,7 @@ RUN yum -y install \ devtoolset-7-toolchain \ pkgconfig make cmake3 \ autoconf automake autogen libtool \ + cppcheck \ texinfo git curl tar # Several tools only needed for developement and testing @@ -65,24 +66,24 @@ RUN yum -y install \ # Build & Install Fmtlib RUN git clone --recursive https://github.com/fmtlib/fmt.git /tmp/fmt && \ - mkdir -p /tmp/fmt/build && cd /tmp/fmt/build && \ - git checkout 5.2.0 && \ - cmake3 -DBUILD_SHARED_LIBS=1 .. && \ - make -j$(nproc) install && \ + mkdir -p /tmp/fmt/build && cd /tmp/fmt/build && \ + git checkout 5.2.0 && \ + cmake3 -DBUILD_SHARED_LIBS=1 .. && \ + make -j$(nproc) install && \ rm -rf /tmp/fmt # Build & Install spdlog RUN git clone --recursive https://github.com/gabime/spdlog.git /tmp/spdlog && \ - mkdir -p /tmp/spdlog/build && cd /tmp/spdlog/build && \ - git checkout v1.3.1 && \ - cmake3 -DSPDLOG_FMT_EXTERNAL=ON -DSPDLOG_BUILD_BENCH=OFF .. && \ - make -j$(nproc) install && \ + mkdir -p /tmp/spdlog/build && cd /tmp/spdlog/build && \ + git checkout v1.3.1 && \ + cmake3 -DSPDLOG_FMT_EXTERNAL=ON -DSPDLOG_BUILD_BENCH=OFF .. && \ + make -j$(nproc) install && \ rm -rf /tmp/spdlog # Build & Install Criterion RUN git clone --recursive https://github.com/Snaipe/Criterion /tmp/criterion && \ - mkdir -p /tmp/criterion/build && cd /tmp/criterion/build && \ - git checkout v2.3.3 && \ + mkdir -p /tmp/criterion/build && cd /tmp/criterion/build && \ + git checkout v2.3.3 && \ cmake3 .. && \ make -j$(nproc) install && \ rm -rf /tmp/* diff --git a/fpga/tests/CMakeLists.txt b/fpga/tests/unit/CMakeLists.txt similarity index 100% rename from fpga/tests/CMakeLists.txt rename to fpga/tests/unit/CMakeLists.txt diff --git a/fpga/tests/dma.cpp b/fpga/tests/unit/dma.cpp similarity index 99% rename from fpga/tests/dma.cpp rename to fpga/tests/unit/dma.cpp index 4bb36094f..448e508de 100644 --- a/fpga/tests/dma.cpp +++ b/fpga/tests/unit/dma.cpp @@ -33,6 +33,7 @@ using namespace villas; +// cppcheck-suppress unknownMacro Test(fpga, dma, .description = "DMA") { auto logger = logging.get("unit-test:dma"); diff --git a/fpga/tests/fifo.cpp b/fpga/tests/unit/fifo.cpp similarity index 98% rename from fpga/tests/fifo.cpp rename to fpga/tests/unit/fifo.cpp index 3898b882a..ab1a2310b 100644 --- a/fpga/tests/fifo.cpp +++ b/fpga/tests/unit/fifo.cpp @@ -32,6 +32,7 @@ using namespace villas; +// cppcheck-suppress unknownMacro Test(fpga, fifo, .description = "FIFO") { ssize_t len; diff --git a/fpga/tests/fpga.cpp b/fpga/tests/unit/fpga.cpp similarity index 98% rename from fpga/tests/fpga.cpp rename to fpga/tests/unit/fpga.cpp index 58e3dd4f2..031e17a65 100644 --- a/fpga/tests/fpga.cpp +++ b/fpga/tests/unit/fpga.cpp @@ -90,6 +90,7 @@ static void fini() state.cards.clear(); } +// cppcheck-suppress unknownMacro TestSuite(fpga, .init = init, .fini = fini, diff --git a/fpga/tests/global.hpp b/fpga/tests/unit/global.hpp similarity index 100% rename from fpga/tests/global.hpp rename to fpga/tests/unit/global.hpp diff --git a/fpga/tests/gpu.cpp b/fpga/tests/unit/gpu.cpp similarity index 99% rename from fpga/tests/gpu.cpp rename to fpga/tests/unit/gpu.cpp index 7f85fb5fb..e2a5f9b10 100644 --- a/fpga/tests/gpu.cpp +++ b/fpga/tests/unit/gpu.cpp @@ -39,7 +39,7 @@ using namespace villas; - +// cppcheck-suppress unknownMacro Test(fpga, gpu_dma, .description = "GPU DMA tests") { auto logger = logging.get("unit-test:dma"); diff --git a/fpga/tests/gpu_kernels.cu b/fpga/tests/unit/gpu_kernels.cu similarity index 100% rename from fpga/tests/gpu_kernels.cu rename to fpga/tests/unit/gpu_kernels.cu diff --git a/fpga/tests/hls.c b/fpga/tests/unit/hls.c similarity index 98% rename from fpga/tests/hls.c rename to fpga/tests/unit/hls.c index b8bf12960..3050d101d 100644 --- a/fpga/tests/hls.c +++ b/fpga/tests/unit/hls.c @@ -30,6 +30,7 @@ extern struct fpga_card *card; +// cppcheck-suppress unknownMacro Test(fpga, hls_dft, .description = "HLS: hls_dft") { int ret; diff --git a/fpga/tests/intc.c b/fpga/tests/unit/intc.c similarity index 98% rename from fpga/tests/intc.c rename to fpga/tests/unit/intc.c index 2fe860176..b84aa8cc3 100644 --- a/fpga/tests/intc.c +++ b/fpga/tests/unit/intc.c @@ -29,6 +29,7 @@ extern struct fpga_card *card; +// cppcheck-suppress unknownMacro Test(fpga, intc, .description = "Interrupt Controller") { int ret; diff --git a/fpga/tests/logging.cpp b/fpga/tests/unit/logging.cpp similarity index 100% rename from fpga/tests/logging.cpp rename to fpga/tests/unit/logging.cpp diff --git a/fpga/tests/main.cpp b/fpga/tests/unit/main.cpp similarity index 100% rename from fpga/tests/main.cpp rename to fpga/tests/unit/main.cpp diff --git a/fpga/tests/rtds.cpp b/fpga/tests/unit/rtds.cpp similarity index 99% rename from fpga/tests/rtds.cpp rename to fpga/tests/unit/rtds.cpp index 11b97bee8..877a7d609 100644 --- a/fpga/tests/rtds.cpp +++ b/fpga/tests/unit/rtds.cpp @@ -41,7 +41,7 @@ using namespace villas::fpga::ip; - +// cppcheck-suppress unknownMacro Test(fpga, rtds, .description = "RTDS") { auto logger = villas::logging.get("unit-test:rtds"); diff --git a/fpga/tests/rtds2gpu.cpp b/fpga/tests/unit/rtds2gpu.cpp similarity index 99% rename from fpga/tests/rtds2gpu.cpp rename to fpga/tests/unit/rtds2gpu.cpp index a405336ca..4d8bd1805 100644 --- a/fpga/tests/rtds2gpu.cpp +++ b/fpga/tests/unit/rtds2gpu.cpp @@ -68,6 +68,7 @@ static void dumpMem(const uint32_t* addr, size_t len) } } +// cppcheck-suppress unknownMacro Test(fpga, rtds2gpu_loopback_dma, .description = "Rtds2Gpu") { auto logger = logging.get("unit-test:rtds2gpu"); @@ -176,6 +177,7 @@ Test(fpga, rtds2gpu_loopback_dma, .description = "Rtds2Gpu") } } +// cppcheck-suppress unknownMacro Test(fpga, rtds2gpu_rtt_cpu, .description = "Rtds2Gpu RTT via CPU") { auto logger = logging.get("unit-test:rtds2gpu"); @@ -247,6 +249,7 @@ void gpu_rtds_rtt_start(volatile uint32_t* dataIn, volatile reg_doorbell_t* door void gpu_rtds_rtt_stop(); +// cppcheck-suppress unknownMacro Test(fpga, rtds2gpu_rtt_gpu, .description = "Rtds2Gpu RTT via GPU") { auto logger = logging.get("unit-test:rtds2gpu"); diff --git a/fpga/tests/rtds_rtt.c b/fpga/tests/unit/rtds_rtt.cpp similarity index 98% rename from fpga/tests/rtds_rtt.c rename to fpga/tests/unit/rtds_rtt.cpp index 532de1314..bf9179608 100644 --- a/fpga/tests/rtds_rtt.c +++ b/fpga/tests/unit/rtds_rtt.cpp @@ -31,6 +31,7 @@ extern struct fpga_card *card; +// cppcheck-suppress unknownMacro Test(fpga, rtds_rtt, .description = "RTDS: tight rtt") { int ret; diff --git a/fpga/tests/timer.cpp b/fpga/tests/unit/timer.cpp similarity index 98% rename from fpga/tests/timer.cpp rename to fpga/tests/unit/timer.cpp index 53e71af9b..f9529707d 100644 --- a/fpga/tests/timer.cpp +++ b/fpga/tests/unit/timer.cpp @@ -29,6 +29,7 @@ #include #include "global.hpp" +// cppcheck-suppress unknownMacro Test(fpga, timer, .description = "Timer Counter") { auto logger = villas::logging.get("unit-test:timer"); diff --git a/fpga/tests/xsg.c b/fpga/tests/unit/xsg.c similarity index 98% rename from fpga/tests/xsg.c rename to fpga/tests/unit/xsg.c index 5c1dfbdf4..f0d427764 100644 --- a/fpga/tests/xsg.c +++ b/fpga/tests/unit/xsg.c @@ -34,6 +34,7 @@ extern struct fpga_card *card; +// cppcheck-suppress unknownMacro Test(fpga, xsg, .description = "XSG: multiply_add") { int ret;