This document summarizes the technical analysis of the MBES-lib repository, the verified code/documentation inconsistencies, and the recommended actions.
- The
version.mdfile must be kept up to date for every change made in the repository. - Any planned or completed modification (code, CI, build, documentation) must be added to
version.md.
- Documentation:
README.md,Doxyfile - Build/CI:
CMakeLists.txt,Makefile,MakefileWindows,Jenkinsfile,Scripts/* - Source code:
src/datagrams/*,src/examples/*,src/hydroblock/*,src/examples/overlap/* - Tests:
test/main.cpp,test/*
- Main language: C++
- Domain: MBES datagram parsing, georeferencing, ray tracing, and conversion tooling
- Formats supported in code:
.all,.xtf,.s7k,.kmall- Hydroblock directory mode (detected as a directory)
gcc,g++,make(Ubuntu package:build-essential)cmakeandctestlibeigen3-dev(Eigen)pkg-config
doxygengraphviz(dot)
cppcheckgcovrpython3(ifgcovris installed viapip)
libpcl-devandqtbase5-devfor visualization/overlap targets (not required for the main build)
- Observation: README lists 4 formats (
.all,.kmall,.s7k,.xtf) but does not mention Hydroblock directory mode. - Evidence:
README.md:5src/datagrams/DatagramParserFactory.cpp:17- Impact: users may assume Hydroblock directories are not supported.
- Observation: README documents 5 programs, but CMake builds more (
raytrace,datagram-raytracer,wgs2lgf,lgf2wgs). - Evidence:
README.md:11CMakeLists.txt:31CMakeLists.txt:35CMakeLists.txt:55CMakeLists.txt:59- Impact: available features are not fully documented.
- Observation: version values are defined differently across tools.
- Evidence:
Makefile:4(0.1.0)MakefileWindows:4(0.1.0)Jenkinsfile:4andJenkinsfile:6(0.1.$BUILD_ID)Doxyfile:41(CURRENT_VERSION_OF_MBES_LIB, placeholder)CMakeLists.txt:3(noproject(... VERSION ...))- Impact: artifacts and documentation can drift out of sync.
- Observation: overlap/viewer references files that are missing in the repository.
- Evidence:
src/examples/overlap/overlap.cpp:43includes../viewer/smallUtilityFunctions.hppsrc/examples/vieweris missing in the repositoryMakefileWindows:47referencessrc/examples/viewer/- Impact:
overlap/pcl-viewerbuild reliability is poor.
- Observation: root project uses C++17, overlap subproject uses C++11.
- Evidence:
CMakeLists.txt:8src/examples/overlap/CMakeLists.txt:2- Impact: inconsistent build behavior across targets.
- Observation: filename is not interpolated in one exception string.
- Evidence:
src/examples/georeference.cpp:222- Impact: weaker runtime diagnostics.
- Observation:
wgs2lgfandlgf2wgsare built but not included inRUNTIME_OUTPUT_DIRECTORYproperties. - Evidence:
CMakeLists.txt:56CMakeLists.txt:60CMakeLists.txt:65- Impact: output paths may differ from the rest of the binaries.
- Observation:
GeorefPCLviewerTest.hppexists but is not included bytest/main.cpp. - Evidence:
test/GeorefPCLviewerTest.hpp:1test/main.cpp:5- Impact: some existing tests are not executed by the main test binary.
- Observation: CMake builds
tests, but no tests are registered in CTest. - Evidence:
CMakeLists.txt:70Scripts/linuxBuildAndTest.bash:8- Observed output:
ctest --test-dir buildreturnsNo tests were found!!!. - Impact:
ctestprovides no validation, while project scripts runbuild/test/testsdirectly.
- Observation: several Doxygen keys are obsolete for Doxygen 1.9.8.
- Evidence:
Doxyfile:247Doxyfile:1108Doxyfile:1244Doxyfile:1525Doxyfile:1813Doxyfile:1829Doxyfile:1895Doxyfile:1993Doxyfile:2173Doxyfile:2186Doxyfile:2195Doxyfile:2237Doxyfile:2244Doxyfile:2470- Impact: warning noise in documentation generation and harder maintenance.
- Observation: coverage target uses deprecated
gcovr --branches. - Evidence:
Makefile:94Makefile:95- Impact: warning noise and potential breakage in future gcovr releases.
- Observation: non-virtual polymorphic deletion risk and
new[]/deletemismatch in tests. - Evidence:
src/svp/SvpSelectionStrategy.hpp:18(no virtual destructor)test/RayTracerAppTest.hpp:120(delete svpStrategy)test/KongsbergParserTest.hpp:224(new[])test/KongsbergParserTest.hpp:232(deleteinstead ofdelete[])- Impact: possible undefined behavior (mainly in tests) and reduced code quality.
- Validation timestamp:
2026-02-19 17:08:43 UTC - CMake build: OK (
cmake -S . -B build && cmake --build build) - Test binary run: OK (
./build/test/tests -r compact) => 120 cases, 687 assertions, all passed - CTest: not configured for discovery (
No tests were found!!!) - Documentation (
make doc): OK, with Doxygen warnings (obsolete tags + one documented parameter mismatch) - Coverage (
make coverage): OK, with warnings (gcovr --branchesdeprecated, compiler warnings) - Confirmed binary outputs:
build/bin/*for most toolsbuild/wgs2lgfandbuild/lgf2wgs(outsidebuild/bin, consistent with inconsistency #7)
- Define a single version source in CMake (
project(MBES-lib VERSION x.y.z)) and propagate it to CI/documentation. - Update
README.md(actual supported formats, full executable list, build prerequisites). - Fix or remove obsolete targets (
viewer/overlap) until missing sources are restored. - Normalize runtime output paths across all CMake targets, including
wgs2lgfandlgf2wgs. - Register tests in CTest (
enable_testing()+add_test(...)) soctestbecomes reliable. - Refresh
Doxyfilewithdoxygen -u, then fix remaining documentation warnings. - Fix memory-safety issues and highest-priority compiler warnings.