build: aïlla la implementació de stb_vorbis en un TU propi
Mateix patró que stb_image_write: jail_audio.cpp defineix STB_VORBIS_HEADER_ONLY i només veu les declaracions; les definicions viuen a source/external/stb_vorbis_impl.cpp, ja exclòs del pre-commit. Això permet retirar també la desactivació global de clang-analyzer-core.UndefinedBinaryOperatorResult al .clang-tidy, i el check queda actiu arreu del nostre propi codi.
This commit is contained in:
1 parent
6c1c042637
commit
8aa4ec3daf
4 files changed
+18
-8
No files matched your search
@@ -9,11 +9,6 @@ Checks:
|
|||||||
- -bugprone-easily-swappable-parameters
|
- -bugprone-easily-swappable-parameters
|
||||||
- -bugprone-narrowing-conversions
|
- -bugprone-narrowing-conversions
|
||||||
- -modernize-avoid-c-arrays,-warnings-as-errors
|
- -modernize-avoid-c-arrays,-warnings-as-errors
|
||||||
# Fals positiu recurrent en codi C de tercers (source/external/stb_vorbis.c).
|
|
||||||
# HeaderFilterRegex no aplica a clang-analyzer-*, així que cal desactivar
|
|
||||||
# explícitament. El check d'inferència sobre variables locals de legacy C
|
|
||||||
# genera reports que no reflecteixen bugs reals.
|
|
||||||
- -clang-analyzer-core.UndefinedBinaryOperatorResult
|
|
||||||
|
|
||||||
WarningsAsErrors: '*'
|
WarningsAsErrors: '*'
|
||||||
# Headers nostres (excloem source/external/ que conté dependències de tercers no editables)
|
# Headers nostres (excloem source/external/ que conté dependències de tercers no editables)
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ set(APP_SOURCES
|
|||||||
source/core/rendering/gif.cpp
|
source/core/rendering/gif.cpp
|
||||||
source/core/rendering/screenshot.cpp
|
source/core/rendering/screenshot.cpp
|
||||||
source/external/stb_image_write_impl.cpp
|
source/external/stb_image_write_impl.cpp
|
||||||
|
source/external/stb_vorbis_impl.cpp
|
||||||
source/core/rendering/surface.cpp
|
source/core/rendering/surface.cpp
|
||||||
source/core/rendering/text.cpp
|
source/core/rendering/text.cpp
|
||||||
source/core/rendering/sprite/sprite.cpp
|
source/core/rendering/sprite/sprite.cpp
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
// Implementació completa de stb_vorbis en aquest TU. HEADER_ONLY es queda
|
// Només declaracions de stb_vorbis: STB_VORBIS_HEADER_ONLY omet el bloc
|
||||||
// indefinit aquí perquè el .c aporti les definicions. La resta del projecte
|
// d'implementació. Les definicions les aporta source/external/stb_vorbis_impl.cpp
|
||||||
// només veu el forward-decl de jail_audio.hpp.
|
// (TU aïllat perquè clang-analyzer no dispari fals positius al nostre codi).
|
||||||
|
#define STB_VORBIS_HEADER_ONLY
|
||||||
// clang-format off
|
// clang-format off
|
||||||
// NOLINTNEXTLINE(bugprone-suspicious-include)
|
// NOLINTNEXTLINE(bugprone-suspicious-include)
|
||||||
#include "external/stb_vorbis.c"
|
#include "external/stb_vorbis.c"
|
||||||
|
|||||||
Vendored
+13
@@ -0,0 +1,13 @@
|
|||||||
|
// Unitat de compilació aïllada per a la implementació de stb_vorbis.
|
||||||
|
// Viu dins de source/external/ perquè el `.clang-tidy` d'aquesta carpeta
|
||||||
|
// desactiva tots els checks (com fa per stb_image_write_impl.cpp) i el
|
||||||
|
// pre-commit hook ja filtra aquesta ruta de clang-format / clang-tidy.
|
||||||
|
// Així els fals positius de clang-analyzer-* dins de codi C de tercers
|
||||||
|
// no afecten el nostre codi, que continua tenint tots els checks actius.
|
||||||
|
//
|
||||||
|
// jail_audio.cpp defineix STB_VORBIS_HEADER_ONLY abans d'incloure el .c,
|
||||||
|
// així només en veu les declaracions; les definicions les aporta aquest
|
||||||
|
// TU i l'enllaçador les resol.
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(bugprone-suspicious-include)
|
||||||
|
#include "external/stb_vorbis.c"
|
||||||
Reference in new issue
Block a user