diff --git a/CI/otb_coverage.sh b/CI/otb_coverage.sh
index 1e3c5ba524c85a2b7f731e57c4fc137129c7f8b4..0b5d4b219fdb1584778edf7d8d321b5eca080e20 100755
--- a/CI/otb_coverage.sh
+++ b/CI/otb_coverage.sh
@@ -8,22 +8,11 @@ if [ -z "$BUILD_DIR" ]; then
 BUILD_DIR=${OTB_DIR}/build
 fi
 
-ls -lh $BUILD_DIR/Modules/Core/Common/src/CMakeFiles/OTBCommon.dir/otbLogger.cxx.gcda
-
-cd $BUILD_DIR
-mkdir cov_filter
-
 echo Generating gcov reports in $BUILD_DIR ...
-find $BUILD_DIR -name "*.gcda" -exec llvm-cov gcov -p '{}' > /dev/null \; 
-find . -maxdepth 1 -regex '.*#Modules#[a-zA-Z0-9]+#[a-zA-Z0-9]+#\(include\|src\|app\)#.*\.gcov' -exec mv '{}' cov_filter \;
-rm *.gcov
-cd $OTB_DIR
-
-echo Filtered $(ls $BUILD_DIR/cov_filter | wc -l) gcov reports
-du -sh cov_filter
-
-echo Generating $BUILD_DIR/coverage_report.xml ...
-
-gcovr -r $OTB_DIR -x -g -k --object-directory=$BUILD_DIR/cov_filter > $BUILD_DIR/coverage_report.xml
+cd $BUILD_DIR
+find $BUILD_DIR -name "*.gcda" -exec llvm-cov gcov -p '{}' > /dev/null \;
+ls *.gcov | grep -E -v '#Modules#[a-zA-Z0-9]+#[a-zA-Z0-9]+#(include|src|app)#' | xargs -L 1 rm
+echo Filtered $(ls $BUILD_DIR/*.gcov | wc -l) gcov reports
 
-ls -lh $BUILD_DIR/coverage_report.xml
+gcovr -r $OTB_DIR -x -g --object-directory=$BUILD_DIR > $BUILD_DIR/coverage_report.xml
+echo Generated $BUILD_DIR/coverage_report.xml with $(grep -c '<class ' $BUILD_DIR/coverage_report.xml) classes