add static analysis tests
This commit is contained in:
parent
8b4e1a99cc
commit
e6c12921da
|
@ -17,7 +17,10 @@ file(GLOB AppCommon_HEADERS *.h)
|
|||
add_library(IFEMAppCommon STATIC ${AppCommon_SOURCES})
|
||||
install(TARGETS IFEMAppCommon DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
install(FILES ${AppCommon_HEADERS} DESTINATION include/IFEM)
|
||||
install(FILES scripts/regtest.sh.in DESTINATION lib/IFEM/scripts
|
||||
install(FILES scripts/regtest.sh.in
|
||||
scripts/clang-check-test.sh.in
|
||||
scripts/cppcheck-test.sh.in
|
||||
DESTINATION lib/IFEM/scripts
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||
GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE)
|
||||
|
@ -39,3 +42,5 @@ endif()
|
|||
|
||||
set(TEST_APPS ${TEST_APPS} PARENT_SCOPE)
|
||||
set(UNIT_TEST_NUMBER ${UNIT_TEST_NUMBER} PARENT_SCOPE)
|
||||
list(APPEND CHECK_SOURCES ${AppCommon_SOURCES})
|
||||
set(CHECK_SOURCES ${CHECK_SOURCES} PARENT_SCOPE)
|
||||
|
|
23
Apps/Common/scripts/clang-check-test.sh.in
Executable file
23
Apps/Common/scripts/clang-check-test.sh.in
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This script performs a single analysis using clang-check
|
||||
# It is used by the 'make test' target in the buildsystems
|
||||
# Usually you should use 'ctest -C clang-check' rather than calling this script directly
|
||||
#
|
||||
# Parameters: $1 = Application binary
|
||||
# $2 = Source file to process
|
||||
|
||||
clangcheck_cmd=$1
|
||||
source_file=$2
|
||||
|
||||
tmpfil=`mktemp`
|
||||
$clangcheck_cmd -p @CMAKE_BINARY_DIR@ -analyze $source_file &> $tmpfil
|
||||
cat $tmpfil
|
||||
if test -s $tmpfil
|
||||
then
|
||||
rm $tmpfil
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm $tmpfil
|
||||
exit 0
|
29
Apps/Common/scripts/cppcheck-test.sh.in
Executable file
29
Apps/Common/scripts/cppcheck-test.sh.in
Executable file
|
@ -0,0 +1,29 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This script performs a single analysis using cppcheck
|
||||
# It is used by the 'make test' target in the buildsystems
|
||||
# Usually you should use 'ctest -C cppcheck' rather than calling this script directly
|
||||
#
|
||||
# Parameters: $1 = Application binary
|
||||
# $2 = Source file to process
|
||||
# $3..$N = include path parameters (-I dir1 -I dir2 ...)
|
||||
|
||||
cppcheck_cmd=$1
|
||||
source_file=$2
|
||||
shift 2
|
||||
|
||||
tmpfil=`mktemp`
|
||||
$cppcheck_cmd $@ --force --enable=all --suppress=unusedFunction $source_file &> $tmpfil
|
||||
nmatch=`cat $tmpfil | grep "\[.*\]" | wc -l`
|
||||
nsys=`cat $tmpfil | grep "\[/usr.*\]" | wc -l`
|
||||
nnone=`cat $tmpfil | grep "\[\\*]" | wc -l`
|
||||
let "nval=$nmatch-$nsys-$nnone"
|
||||
if test $nval -gt 0
|
||||
then
|
||||
cat $tmpfil
|
||||
rm $tmpfil
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm $tmpfil
|
||||
exit 0
|
|
@ -105,6 +105,7 @@ if(LRSPLINE_FOUND OR LRSpline_FOUND)
|
|||
file(GLOB LR_SRCS ${PROJECT_SOURCE_DIR}/src/ASM/LR/*.C)
|
||||
list(APPEND IFEM_SRCS ${LR_SRCS})
|
||||
endif()
|
||||
list(APPEND CHECK_SOURCES ${IFEM_SRCS})
|
||||
add_library(IFEM ${IFEM_SRCS} ${TINYXML_SRCS})
|
||||
target_link_libraries(IFEM ${IFEM_DEPLIBS})
|
||||
set_target_properties(IFEM PROPERTIES VERSION ${IFEM_VERSION}
|
||||
|
@ -213,4 +214,5 @@ endif()
|
|||
if(IFEM_COMMON_APP_BUILD OR IFEM_AS_SUBMODULE)
|
||||
set(UNIT_TEST_NUMBER ${UNIT_TEST_NUMBER} PARENT_SCOPE)
|
||||
set(TEST_APPS ${TEST_APPS} PARENT_SCOPE)
|
||||
set(CHECK_SOURCES ${CHECK_SOURCES} PARENT_SCOPE)
|
||||
endif()
|
||||
|
|
|
@ -155,5 +155,4 @@ if(NOT IFEM_TESTING_INCLUDED)
|
|||
include(../Scripts/IFEMTesting)
|
||||
endif()
|
||||
|
||||
set(IFEM_REGTEST_SCRIPT ${IFEM_PATH}/Apps/Common/scripts/regtest.sh.in)
|
||||
include(../Scripts/IFEMDoxy)
|
||||
|
|
|
@ -262,3 +262,7 @@ endif()
|
|||
if(HAS_PARENTHESES)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-parentheses")
|
||||
endif()
|
||||
|
||||
set(IFEM_REGTEST_SCRIPT ${IFEM_PATH}/Apps/Common/scripts/regtest.sh.in)
|
||||
set(IFEM_CLANG_CHECK_TEST_SCRIPT ${IFEM_PATH}/Apps/Common/scripts/clang-check-test.sh.in)
|
||||
set(IFEM_CPPCHECK_TEST_SCRIPT ${IFEM_PATH}/Apps/Common/scripts/cppcheck-test.sh.in)
|
||||
|
|
|
@ -152,6 +152,32 @@ macro(add_check_target)
|
|||
-DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
|
||||
-P ${IFEM_CHECKCOMMITS_SCRIPT})
|
||||
endif()
|
||||
|
||||
foreach(dep ${IFEM_INCLUDE_DIRS} ${IFEM_INCLUDES})
|
||||
list(APPEND IPATHS -I ${dep})
|
||||
endforeach()
|
||||
|
||||
find_program(CLANGCHECK_COMMAND clang-check)
|
||||
find_program(CPPCHECK_COMMAND cppcheck)
|
||||
foreach(src ${CHECK_SOURCES})
|
||||
get_filename_component(name ${src} NAME)
|
||||
get_filename_component(EXT ${src} EXT)
|
||||
if(EXT STREQUAL .C)
|
||||
if(NOT IS_ABSOLUTE ${src})
|
||||
set(src ${PROJECT_SOURCE_DIR}/${src})
|
||||
endif()
|
||||
if(CLANGCHECK_COMMAND AND CMAKE_EXPORT_COMPILE_COMMANDS)
|
||||
add_test(NAME clang-check+${name}
|
||||
COMMAND clang-check-test.sh ${CLANGCHECK_COMMAND} ${src}
|
||||
CONFIGURATIONS analyze clang-check)
|
||||
endif()
|
||||
if(CPPCHECK_COMMAND)
|
||||
add_test(NAME cppcheck+${name}
|
||||
COMMAND cppcheck-test.sh ${CPPCHECK_COMMAND} ${src} ${IPATHS}
|
||||
CONFIGURATIONS analyze cppcheck)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
if(IFEM_TEST_MEMCHECK)
|
||||
|
@ -174,3 +200,8 @@ elseif(NOT IFEM_AS_SUBMODULE AND NOT IFEM_LIBRARY_BUILD
|
|||
include_directories(${GTEST_INCLUDE_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Generate regtest script with correct paths
|
||||
configure_file(${IFEM_REGTEST_SCRIPT} regtest.sh)
|
||||
configure_file(${IFEM_CLANG_CHECK_TEST_SCRIPT} clang-check-test.sh)
|
||||
configure_file(${IFEM_CPPCHECK_TEST_SCRIPT} cppcheck-test.sh)
|
||||
|
|
|
@ -15,6 +15,8 @@ if(NOT IFEM_FOUND)
|
|||
set(CEREAL_FOUND @CEREAL_FOUND@)
|
||||
|
||||
set(IFEM_REGTEST_SCRIPT ${IFEM_PATH}/scripts/regtest.sh.in)
|
||||
set(IFEM_CLANG_CHECK_TEST_SCRIPT ${IFEM_PATH}/scripts/clang-check-test.sh.in)
|
||||
set(IFEM_CPPCHECK_TEST_SCRIPT ${IFEM_PATH}/scripts/cppcheck-test.sh.in)
|
||||
set(IFEM_CHECKCOMMITS_SCRIPT ${IFEM_PATH}/CheckCommits.cmake)
|
||||
set(CMAKE_INSTALL_DOCDIR @CMAKE_INSTALL_DOCDIR@)
|
||||
|
||||
|
|
|
@ -79,7 +79,12 @@ function build_module {
|
|||
then
|
||||
cmake --build . --target testapps -- -j$nproc
|
||||
test $? -eq 0 || exit 2
|
||||
ctest -T Test --test-timeout 180 --no-compress-output
|
||||
if test -z "$CTEST_CONFIGURATION"
|
||||
then
|
||||
ctest -T Test --test-timeout 180 --no-compress-output
|
||||
else
|
||||
ctest -C $CTEST_CONFIGURATION -T Test --test-timeout 180 --no-compress-output
|
||||
fi
|
||||
$WORKSPACE/deps/IFEM/jenkins/convert.py -x $WORKSPACE/deps/IFEM/jenkins/conv.xsl -t . > testoutput.xml
|
||||
else
|
||||
cmake --build . --target install -- -j$nproc
|
||||
|
|
Loading…
Reference in New Issue
Block a user