Skip to content

Commit 1440fbd

Browse files
authored
Merge pull request #5 from Simverge/coverity
Add Coverity Scan support
2 parents 7833d70 + b35572f commit 1440fbd

File tree

8 files changed

+85
-27
lines changed

8 files changed

+85
-27
lines changed

.travis.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ addons:
1515
env:
1616
- DISTRO=alpine BUILD_TYPE=Release
1717
- DISTRO=alpine BUILD_TYPE=Debug
18-
- DISTRO=ubuntu BUILD_TYPE=Release
19-
- DISTRO=ubuntu BUILD_TYPE=Debug
18+
- DISTRO=ubuntu BUILD_TYPE=Release SCAN=coverity
19+
- DISTRO=ubuntu BUILD_TYPE=Debug SCAN=sonarcloud
2020

2121
before_install:
2222
- docker pull simverge/pdalc-build-deps:$DISTRO
2323

2424
script:
2525
- chmod u+x $TRAVIS_BUILD_DIR/tests/travis/script.sh
26-
- docker run -e TRAVIS_BRANCH -e BUILD_TYPE -e DISTRO -v $TRAVIS_BUILD_DIR:/pdalc -t simverge/pdalc-build-deps:$DISTRO /pdalc/tests/travis/script.sh
27-
- if [ "$DISTRO" = "ubuntu" ]; then sonar-scanner; fi
26+
- docker run -e SCAN -e COVERITY_EMAIL -e COVERITY_TOKEN -e TRAVIS_COMMIT -e TRAVIS_BRANCH -e BUILD_TYPE -e DISTRO -v $TRAVIS_BUILD_DIR:/pdalc -t simverge/pdalc-build-deps:$DISTRO /pdalc/tests/travis/script.sh
27+
- if [ "$SCAN" = "sonarcloud" ]; then sonar-scanner; fi

.vscode/tasks.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,32 @@
33
// for the documentation about the tasks.json format
44
"version": "2.0.0",
55
"tasks": [
6+
{
7+
"label": "coverity-vcpkg-x64-windows-release",
8+
"type": "shell",
9+
"windows": {
10+
"command": "rd ${workspaceFolder}\\build\\x64-windows -Recurse; ${env:COVERITY_ROOT}\\bin\\cov-configure.exe --msvc; ${env:COVERITY_ROOT}\\bin\\cov-build.exe --dir ${workspaceFolder}\\build\\x64-windows\\cov-int ${workspaceFolder}\\make.bat"
11+
},
12+
"options": {
13+
"env": {
14+
"BUILD_TYPE": "Release",
15+
"ARCH": "x64",
16+
"TARGET_OS": "windows",
17+
"TOOLCHAIN": "${env:VCPKG_ROOT}\\scripts\\buildsystems\\vcpkg.cmake"
18+
}
19+
},
20+
"group": {
21+
"kind": "build",
22+
"isDefault": true
23+
},
24+
"presentation": {
25+
"reveal": "always",
26+
"panel": "new"
27+
},
28+
"problemMatcher": [
29+
"$msCompile"
30+
]
31+
},
632
{
733
"label": "vcpkg-x64-windows-release",
834
"type": "shell",

CMakeLists.txt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}" CACHE STRING "CMake install prefi
2121
set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "CMake debug suffix")
2222
set(CMAKE_RELWITHDEBINFO_POSTFIX "" CACHE STRING "CMake RelWithDebInfo suffix")
2323
set(PDALC_ENABLE_CODE_COVERAGE ON CACHE BOOL "Enable code coverage calculation")
24+
set(PDALC_ENABLE_DOCS ON CACHE BOOL "Enable documentation generation")
25+
set(PDALC_ENABLE_TESTS ON CACHE BOOL "Enable pdal-c tests")
2426
set(PDALC_GCC_PARAM_GGC_MIN_HEAPSIZE "131072" CACHE STRING "GCC garbage collection minimum heap size")
2527

2628
include(ObtainProjectVersion)
@@ -29,7 +31,7 @@ include_directories("${CMAKE_SOURCE_DIR}/source")
2931
if(CMAKE_COMPILER_IS_GNUCXX)
3032
add_compile_options(--param ggc-min-heapsize=${PDALC_GCC_PARAM_GGC_MIN_HEAPSIZE})
3133

32-
if(PDALC_ENABLE_CODE_COVERAGE)
34+
if(PDALC_ENABLE_CODE_COVERAGE AND PDALC_ENABLE_TESTS)
3335
message(STATUS "Enabled code coverage analysis")
3436
include(CodeCoverage)
3537
APPEND_COVERAGE_COMPILER_FLAGS()
@@ -43,8 +45,13 @@ if(CMAKE_COMPILER_IS_GNUCXX)
4345
endif()
4446

4547
add_subdirectory("source/pdal")
46-
add_subdirectory("doc")
4748

48-
include(CTest)
49-
add_subdirectory("tests/data")
50-
add_subdirectory("tests/pdal")
49+
if(PDALC_ENABLE_DOCS)
50+
add_subdirectory("doc")
51+
endif()
52+
53+
if(PDALC_ENABLE_TESTS)
54+
include(CTest)
55+
add_subdirectory("tests/data")
56+
add_subdirectory("tests/pdal")
57+
endif()

README.md

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
11
pdal-c: PDAL C API
22
==================
33

4-
[![Build Status](https://travis-ci.com/Simverge/pdal-c.svg?branch=master)](https://travis-ci.com/Simverge/pdal-c)[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Simverge_pdal-c&metric=alert_status)](https://sonarcloud.io/dashboard?id=Simverge_pdal-c)
4+
[![Build Status](https://travis-ci.com/Simverge/pdal-c.svg?branch=master)](https://travis-ci.com/Simverge/pdal-c)
5+
[![Coverity Scan](https://scan.coverity.com/projects/17631/badge.svg)](https://scan.coverity.com/projects/simverge-pdal-c)
6+
[![SonarCloud](https://sonarcloud.io/api/project_badges/measure?project=Simverge_pdal-c&metric=alert_status)](https://sonarcloud.io/dashboard?id=Simverge_pdal-c)
57

6-
[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=Simverge_pdal-c&metric=ncloc)](https://sonarcloud.io/dashboard?id=Simverge_pdal-c)
7-
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=Simverge_pdal-c&metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=Simverge_pdal-c)[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=Simverge_pdal-c&metric=sqale_index)](https://sonarcloud.io/dashboard?id=Simverge_pdal-c)
8-
9-
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Simverge_pdal-c&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=Simverge_pdal-c)
10-
[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=Simverge_pdal-c&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=Simverge_pdal-c)
11-
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=Simverge_pdal-c&metric=security_rating)](https://sonarcloud.io/dashboard?id=Simverge_pdal-c)
12-
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=Simverge_pdal-c&metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=Simverge_pdal-c)
138

149
*pdal-c* is a C API for the Point Data Abstraction Library ([PDAL](http:/github.com/PDAL/PDAL))
1510
and is compatible with PDAL 1.7 and later.

source/pdal/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ set_target_properties(${TARGET} PROPERTIES
4949
)
5050

5151
# Measure code coverage on gcc
52-
if(CMAKE_COMPILER_IS_GNUCXX AND PDALC_ENABLE_CODE_COVERAGE)
52+
if(CMAKE_COMPILER_IS_GNUCXX AND PDALC_ENABLE_CODE_COVERAGE AND PDALC_ENABLE_TESTS)
5353
SETUP_TARGET_FOR_COVERAGE(
5454
NAME coverage_${TARGET}
5555
EXECUTABLE test_${TARGET}

tests/docker/pdalc-build-deps_alpine/Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ RUN \
1212
lcov \
1313
make \
1414
cmake \
15-
curl
15+
curl \
16+
wget

tests/docker/pdalc-build-deps_ubuntu/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ apt-get update && apt-get install -y --no-install-recommends \
66
build-essential \
77
cmake \
88
lcov \
9+
wget \
910
&& apt-get clean \
1011
&& rm -rf /var/lib/apt/lists/*

tests/travis/script.sh

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,53 @@
33
gcc --version
44
g++ --version
55

6-
if [ "$DISTRO" = "ubuntu" ]; then
7-
# Download and unzip the sonarcloud build wrapper
6+
PDALC_CMAKE_ARGS="-DPDALC_GCC_PARAM_GGC_MIN_HEAPSIZE=8192"
7+
8+
if [ "$SCAN" = "sonarcloud" ]; then
89
curl -LsS https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip > build-wrapper-linux-x86.zip
910
unzip build-wrapper-linux-x86.zip
10-
export SONARCLOUD_DIR=$PWD/build-wrapper-linux-x86
11+
rm build-wrapper-linux-x86.zip
12+
export SONARCLOUD_DIR=${PWD}/build-wrapper-linux-x86
13+
14+
elif [ "$SCAN" = "coverity" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
15+
curl -LsS -d "token=${COVERITY_TOKEN}&project=Simverge%2Fpdal-c" -X POST https://scan.coverity.com/download/cxx/linux64 > coverity_tool.tgz
16+
tar xaf coverity_tool.tgz
17+
rm coverity_tool.tgz
18+
mv cov-analysis-linux64-* cov-analysis-linux64
19+
export COVERITY_DIR=${PWD}/cov-analysis-linux64/bin
20+
21+
PDALC_CMAKE_ARGS += "-DPDALC_ENABLE_CODE_COVERAGE=OFF"
22+
PDALC_CMAKE_ARGS += "-DPDALC_ENABLE_DOCS=OFF"
1123
fi
1224

1325
export CI_PROJECT_DIR=/pdalc
1426
export CI_PROJECT_NAME=pdal-c
1527
export TARGET_PLATFORM=$DISTRO-`uname -m`-$BUILD_TYPE
16-
echo "Building $CI_PROJECT_NAME ($TRAVIS_BRANCH branch) for $TARGET_PLATFORM"
28+
echo "Building $CI_PROJECT_NAME ($TRAVIS_BRANCH-$TRAVIS_COMMIT) for $TARGET_PLATFORM"
1729
rm -rf "$CI_PROJECT_DIR/build/$TARGET_PLATFORM"
1830
mkdir -p "$CI_PROJECT_DIR/build/$TARGET_PLATFORM"
1931
cd "$CI_PROJECT_DIR/build/$TARGET_PLATFORM"
20-
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPDALC_GCC_PARAM_GGC_MIN_HEAPSIZE=8192 "$CI_PROJECT_DIR"
2132

22-
if [ "$DISTRO" = "ubuntu" ]; then
23-
$SONARCLOUD_DIR/build-wrapper-linux-x86-64 --out-dir $CI_PROJECT_DIR/bw-output make
33+
cmake -G "Unix Makefiles" \
34+
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
35+
${PDALC_CMAKE_ARGS} \
36+
"${CI_PROJECT_DIR}"
37+
38+
if [ "$SCAN" = "sonarcloud" ]; then
39+
${SONARCLOUD_DIR}/build-wrapper-linux-x86-64 --out-dir ${CI_PROJECT_DIR}/bw-output make
40+
elif [ "$SCAN" = "coverity" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
41+
${COVERITY_DIR}/cov-configure --gcc
42+
${COVERITY_DIR}/cov-build --dir ${CI_PROJECT_DIR}/cov-int make
43+
cd ${CI_PROJECT_DIR}
44+
tar czf cov-int.tgz cov-int
45+
46+
curl --form token="${COVERITY_TOKEN}" \
47+
--form email="${COVERITY_EMAIL}" \
48+
--form file=@${CI_PROJECT_DIR}/cov-int.tgz \
49+
--form version="${TRAVIS_BRANCH}-$TRAVIS_COMMIT" \
50+
--form description="Automatic Coverity Scan build for ${TRAVIS_BRANCH}-$TRAVIS_COMMIT" \
51+
https://scan.coverity.com/builds?project=Simverge%2Fpdal-c
2452
else
53+
echo "Running build without static analysis scans"
2554
make
2655
fi
27-
make coverage_pdalc

0 commit comments

Comments
 (0)