Build a code coverage report with gcov and lcov (#1221)

This commit is contained in:
Rangi
2023-11-07 18:03:26 -05:00
committed by GitHub
parent f3dbf17b78
commit 765ae3f484
3 changed files with 40 additions and 1 deletions

4
.gitignore vendored
View File

@@ -3,9 +3,13 @@
/rgbfix /rgbfix
/rgbgfx /rgbgfx
/rgbshim.sh /rgbshim.sh
/coverage/
*.o *.o
*.exe *.exe
*.dll *.dll
*.gcno
*.gcda
*.gcov
.checkpatch-camelcase.* .checkpatch-camelcase.*
CMakeCache.txt CMakeCache.txt
CMakeFiles/ CMakeFiles/

View File

@@ -3,7 +3,8 @@
.SUFFIXES: .SUFFIXES:
.SUFFIXES: .cpp .y .o .SUFFIXES: .cpp .y .o
.PHONY: all clean install checkcodebase checkpatch checkdiff develop debug mingw32 mingw64 wine-shim dist .PHONY: all clean install checkcodebase checkpatch checkdiff \
develop debug coverage mingw32 mingw64 wine-shim dist
# User-defined variables # User-defined variables
@@ -182,6 +183,7 @@ clean:
$Q${RM} rgbfix rgbfix.exe $Q${RM} rgbfix rgbfix.exe
$Q${RM} rgbgfx rgbgfx.exe $Q${RM} rgbgfx rgbgfx.exe
$Qfind src/ -name "*.o" -exec rm {} \; $Qfind src/ -name "*.o" -exec rm {} \;
$Qfind . -type f \( -name "*.gcno" -o -name "*.gcda" -o -name "*.gcov" \) -exec rm {} \;
$Q${RM} rgbshim.sh $Q${RM} rgbshim.sh
$Q${RM} src/asm/parser.cpp src/asm/parser.hpp $Q${RM} src/asm/parser.cpp src/asm/parser.hpp
$Q${RM} test/gfx/randtilegen test/gfx/rgbgfx_test $Q${RM} test/gfx/randtilegen test/gfx/rgbgfx_test
@@ -253,6 +255,12 @@ debug:
$Qenv ${MAKE} \ $Qenv ${MAKE} \
CXXFLAGS="-ggdb3 -Og -fno-omit-frame-pointer -fno-optimize-sibling-calls" CXXFLAGS="-ggdb3 -Og -fno-omit-frame-pointer -fno-optimize-sibling-calls"
# This target is used during development in order to inspect code coverage with gcov.
coverage:
$Qenv ${MAKE} \
CXXFLAGS="-ggdb3 -Og --coverage -fno-omit-frame-pointer -fno-optimize-sibling-calls"
# Targets for the project maintainer to easily create Windows exes. # Targets for the project maintainer to easily create Windows exes.
# This is not for Windows users! # This is not for Windows users!
# If you're building on Windows with Cygwin or Mingw, just follow the Unix # If you're building on Windows with Cygwin or Mingw, just follow the Unix

27
contrib/coverage.bash Executable file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -e
# Build RGBDS with gcov support
make coverage -j
# Run the tests
for dir in asm link fix gfx; do
pushd test/$dir
./test.sh
popd
done
# Generate coverage logs
gcov src/**/*.{c,cpp}
mkdir -p coverage
# Generate coverage report
lcov -c --no-external -d . -o coverage/coverage.info
genhtml -f -s -o coverage/ coverage/coverage.info
# Open report in web browser
if [ "$(uname)" == "Darwin" ]; then
open coverage/index.html
else
xdg-open coverage/index.html
fi