Skip to content

Add make pre-push command#2

Merged
xqgex merged 1 commit intomainfrom
make_pre_push
Jan 31, 2026
Merged

Add make pre-push command#2
xqgex merged 1 commit intomainfrom
make_pre_push

Conversation

@xqgex
Copy link
Owner

@xqgex xqgex commented Jan 31, 2026

Pull Request

Description

Add make pre-push for local CI validation

  • Add pre-push target to Makefile that replicates full CI pipeline locally
  • Auto-detect available GCC (11+) and Clang (13+) compilers using Make $(foreach)/$(if)
  • Test with boundary versions (min + max of each compiler family found)
  • Run format, multi-compiler build, cppcheck, clang-tidy, sanitizers, valgrind in sequence
  • Update documentation to reference make pre-push:
    • README.md: Add pre-push in Build & Test section
    • CONTRIBUTING.md: Simplify submission steps (4-5 → 4)
    • PR template: Reduce checklist by 2
    • Copilot instructions: Update Definition of Done
  • Sort Makefiles commands alphabetically

Related Issue

N/A

Additional Notes

N/A

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Performance improvement

Checklist

  • My code follows the project's zero-copy coding style
  • I have read the CONTRIBUTING.md guidelines
  • I have added/updated documentation as needed
  • I have added tests that prove my fix/feature works
  • I have run tests locally (make test)
  • I have run static analysis checks locally (make check)
  • I have verified that my changes do not introduce new memory leaks (make valgrind and make sanitize)
  • I have signed my commits (DCO) using git commit -s

Signed-off-by: Yogev Neumann <xqgex@users.noreply.github.com>
@xqgex xqgex self-assigned this Jan 31, 2026
Copilot AI review requested due to automatic review settings January 31, 2026 05:46
@github-actions
Copy link
Contributor

CI Report

Commit: 2f542a656b1584ed3174ba49f5753cd8b48e970e


Static Analysis

Tool Status
cppcheck
clang-tidy

cppcheck

Click to expand
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
=== Static Analysis (cppcheck) ===
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_api.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_api.h: __GNUC__=1...
1/29 files checked 0% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_AllowedManeuvers.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_AllowedManeuvers.h: __GNUC__=1...
2/29 files checked 4% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_BrakeAppliedStatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_BrakeAppliedStatus.h: __GNUC__=1...
3/29 files checked 6% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_ExteriorLights.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_ExteriorLights.h: __GNUC__=1...
4/29 files checked 10% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_GNSSstatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_GNSSstatus.h: __GNUC__=1...
5/29 files checked 13% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneDirection.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneDirection.h: __GNUC__=1...
6/29 files checked 16% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneSharing.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneSharing.h: __GNUC__=1...
7/29 files checked 19% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalAssistive.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalAssistive.h: __GNUC__=1...
8/29 files checked 23% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalDeviceUsageState.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalDeviceUsageState.h: __GNUC__=1...
9/29 files checked 28% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyAndRoadWorkerActivity.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyAndRoadWorkerActivity.h: __GNUC__=1...
10/29 files checked 32% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyDirectingTrafficSubType.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyDirectingTrafficSubType.h: __GNUC__=1...
11/29 files checked 37% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TrafficLightOperationStatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TrafficLightOperationStatus.h: __GNUC__=1...
12/29 files checked 41% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TransitStatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TransitStatus.h: __GNUC__=1...
13/29 files checked 44% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_UserSizeAndBehaviour.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_UserSizeAndBehaviour.h: __GNUC__=1...
14/29 files checked 48% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VehicleEventFlags.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VehicleEventFlags.h: __GNUC__=1...
15/29 files checked 53% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VerticalAccelerationThreshold.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VerticalAccelerationThreshold.h: __GNUC__=1...
16/29 files checked 56% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_BSMcoreData.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_BSMcoreData.h: __GNUC__=1...
17/29 files checked 59% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_IntersectionReferenceID.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_IntersectionReferenceID.h: __GNUC__=1...
18/29 files checked 60% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_PathPrediction.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_PathPrediction.h: __GNUC__=1...
19/29 files checked 61% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_common.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_common.h: __GNUC__=1...
20/29 files checked 63% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_constants.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_constants.h: __GNUC__=1...
21/29 files checked 70% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_inline.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_inline.h: __GNUC__=1...
22/29 files checked 72% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_toolkit.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_toolkit.h: __GNUC__=1...
23/29 files checked 74% done
Checking J2735_run_tests.c ...
Checking J2735_run_tests.c: __GNUC__=1...
24/29 files checked 74% done
Checking J2735_UPER_test.c ...
Checking J2735_UPER_test.c: __GNUC__=1...
25/29 files checked 81% done
Checking J2735_internal_DE_VehicleEventFlags_test.c ...
Checking J2735_internal_DE_VehicleEventFlags_test.c: __GNUC__=1...
26/29 files checked 95% done
Checking J2735_internal_DF_BSMcoreData_test.c ...
Checking J2735_internal_DF_BSMcoreData_test.c: __GNUC__=1...
27/29 files checked 96% done
Checking J2735_internal_DF_IntersectionReferenceID_test.c ...
Checking J2735_internal_DF_IntersectionReferenceID_test.c: __GNUC__=1...
28/29 files checked 97% done
Checking J2735_internal_DF_PathPrediction_test.c ...
Checking J2735_internal_DF_PathPrediction_test.c: __GNUC__=1...
29/29 files checked 100% done
nofile:0:0: information: Active checkers: 143/592 (use --checkers-report=<filename> to see details) [checkersReport]

=== Static Analysis Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

clang-tidy

Click to expand
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
=== clang-tidy ===
[1/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_run_tests.c.
2400 warnings generated.
[2/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_UPER_test.c.
4806 warnings generated.
[3/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DE_VehicleEventFlags_test.c.
7265 warnings generated.
[4/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DF_BSMcoreData_test.c.
9671 warnings generated.
[5/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DF_IntersectionReferenceID_test.c.
12077 warnings generated.
[6/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DF_PathPrediction_test.c.
14483 warnings generated.
Suppressed 14493 warnings (14483 in non-user code, 10 NOLINT).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
=== clang-tidy Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

Sanitizers (ASan + UBSan)

Test Output
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o J2735_UPER_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o J2735_internal_DE_VehicleEventFlags_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o J2735_internal_DF_BSMcoreData_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o J2735_internal_DF_IntersectionReferenceID_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o J2735_internal_DF_PathPrediction_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o unity.c
=== AddressSanitizer ===
gcc -fsanitize=address -std=c17 -g -O1 -fno-omit-frame-pointer -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_asan \
	J2735_run_tests.c /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o
/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_asan
J2735_run_tests.c:114:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:137:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:138:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:223:test_path_prediction_no_extension:PASS
J2735_run_tests.c:224:test_path_prediction_with_extension:PASS
J2735_run_tests.c:225:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:885:test_inline_read_length_determinant_short_form_min:PASS
J2735_run_tests.c:886:test_inline_read_length_determinant_short_form_max:PASS
J2735_run_tests.c:887:test_inline_read_length_determinant_short_form_typical:PASS
J2735_run_tests.c:888:test_inline_read_length_determinant_long_form_min:PASS
J2735_run_tests.c:889:test_inline_read_length_determinant_long_form_128:PASS
J2735_run_tests.c:890:test_inline_read_length_determinant_long_form_max:PASS
J2735_run_tests.c:891:test_inline_read_length_determinant_fragmented_error:PASS
J2735_run_tests.c:892:test_inline_read_length_determinant_nonzero_bit_offset:PASS
J2735_run_tests.c:895:test_inline_read_nsnnwn_small_form_min:PASS
J2735_run_tests.c:896:test_inline_read_nsnnwn_small_form_max:PASS
J2735_run_tests.c:897:test_inline_read_nsnnwn_small_form_typical:PASS
J2735_run_tests.c:898:test_inline_read_nsnnwn_large_form_64:PASS
J2735_run_tests.c:899:test_inline_read_nsnnwn_large_form_100:PASS
J2735_run_tests.c:900:test_inline_read_nsnnwn_large_form_255:PASS
J2735_run_tests.c:901:test_inline_read_nsnnwn_large_form_256:PASS
J2735_run_tests.c:902:test_inline_read_nsnnwn_large_form_65535:PASS
J2735_run_tests.c:903:test_inline_read_nsnnwn_large_form_4_bytes:PASS
J2735_run_tests.c:904:test_inline_read_nsnnwn_large_form_5_bytes_error:PASS
J2735_run_tests.c:905:test_inline_read_nsnnwn_fragmented_error:PASS
J2735_run_tests.c:906:test_inline_read_nsnnwn_nonzero_bit_offset:PASS
J2735_run_tests.c:909:test_inline_skip_extensions_one_slot_none_present:PASS
J2735_run_tests.c:910:test_inline_skip_extensions_one_slot_present:PASS
J2735_run_tests.c:911:test_inline_skip_extensions_two_slots_both_present:PASS
J2735_run_tests.c:912:test_inline_skip_extensions_two_slots_first_only:PASS
J2735_run_tests.c:913:test_inline_skip_extensions_two_slots_second_only:PASS
J2735_run_tests.c:914:test_inline_skip_extensions_empty_content:PASS
J2735_run_tests.c:915:test_inline_skip_extensions_nsnnwn_error:PASS
J2735_run_tests.c:916:test_inline_skip_extensions_length_error:PASS
J2735_run_tests.c:917:test_inline_skip_extensions_nonzero_offset:PASS
J2735_run_tests.c:918:test_inline_skip_extensions_too_many_extensions:PASS
J2735_run_tests.c:1214:test_vehicle_event_flags_non_extended:PASS
J2735_run_tests.c:1215:test_vehicle_event_flags_extended:PASS
J2735_run_tests.c:1226:test_vehicle_event_flags_individual_extended_flags_0_to_4:PASS
J2735_run_tests.c:1227:test_vehicle_event_flags_individual_extended_flags_5_to_9:PASS
J2735_run_tests.c:1228:test_vehicle_event_flags_individual_extended_flags_10_to_13:PASS
J2735_run_tests.c:1229:test_vehicle_event_flags_individual_non_extended_flags_0_to_4:PASS
J2735_run_tests.c:1230:test_vehicle_event_flags_individual_non_extended_flags_5_to_9:PASS
J2735_run_tests.c:1231:test_vehicle_event_flags_individual_non_extended_flags_10_to_13:PASS
J2735_run_tests.c:1238:test_vehicle_event_flags_size_non_extended:PASS
J2735_run_tests.c:1239:test_vehicle_event_flags_size_extended:PASS
J2735_run_tests.c:1248:test_vehicle_event_flags_all_zeros_non_extended:PASS
J2735_run_tests.c:1249:test_vehicle_event_flags_extended_single_jackknife:PASS
J2735_run_tests.c:1250:test_vehicle_event_flags_non_extended_all_root_flags_on_metadata:PASS
J2735_run_tests.c:1251:test_vehicle_event_flags_non_extended_all_root_flags_on_bits:PASS
J2735_run_tests.c:1252:test_vehicle_event_flags_extended_all_zeros:PASS
J2735_run_tests.c:1259:test_vehicle_event_flags_non_extended_alternating_0x1555_metadata:PASS
J2735_run_tests.c:1260:test_vehicle_event_flags_non_extended_alternating_0x1555_0_to_4:PASS
J2735_run_tests.c:1261:test_vehicle_event_flags_non_extended_alternating_0x1555_5_to_9:PASS
J2735_run_tests.c:1262:test_vehicle_event_flags_non_extended_alternating_0x1555_10_to_12:PASS
J2735_run_tests.c:1263:test_vehicle_event_flags_non_extended_alternating_0x0AAA_metadata:PASS
J2735_run_tests.c:1264:test_vehicle_event_flags_non_extended_alternating_0x0AAA_0_to_4:PASS
J2735_run_tests.c:1265:test_vehicle_event_flags_non_extended_alternating_0x0AAA_5_to_9:PASS
J2735_run_tests.c:1266:test_vehicle_event_flags_non_extended_alternating_0x0AAA_10_to_12:PASS
J2735_run_tests.c:1275:test_vehicle_event_flags_single_bit_0_hazard_lights:PASS
J2735_run_tests.c:1276:test_vehicle_event_flags_single_bit_12_airbag:PASS
J2735_run_tests.c:1277:test_vehicle_event_flags_single_bit_7_hard_braking:PASS
J2735_run_tests.c:1278:test_vehicle_event_flags_extended_single_hazard_lights:PASS

-----------------------
63 Tests 0 Failures 0 Ignored 
OK

=== UndefinedBehaviorSanitizer ===
gcc -fsanitize=undefined -std=c17 -g -O1 -fno-omit-frame-pointer -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_ubsan \
	J2735_run_tests.c /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o
/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_ubsan
J2735_run_tests.c:114:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:137:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:138:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:223:test_path_prediction_no_extension:PASS
J2735_run_tests.c:224:test_path_prediction_with_extension:PASS
J2735_run_tests.c:225:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:885:test_inline_read_length_determinant_short_form_min:PASS
J2735_run_tests.c:886:test_inline_read_length_determinant_short_form_max:PASS
J2735_run_tests.c:887:test_inline_read_length_determinant_short_form_typical:PASS
J2735_run_tests.c:888:test_inline_read_length_determinant_long_form_min:PASS
J2735_run_tests.c:889:test_inline_read_length_determinant_long_form_128:PASS
J2735_run_tests.c:890:test_inline_read_length_determinant_long_form_max:PASS
J2735_run_tests.c:891:test_inline_read_length_determinant_fragmented_error:PASS
J2735_run_tests.c:892:test_inline_read_length_determinant_nonzero_bit_offset:PASS
J2735_run_tests.c:895:test_inline_read_nsnnwn_small_form_min:PASS
J2735_run_tests.c:896:test_inline_read_nsnnwn_small_form_max:PASS
J2735_run_tests.c:897:test_inline_read_nsnnwn_small_form_typical:PASS
J2735_run_tests.c:898:test_inline_read_nsnnwn_large_form_64:PASS
J2735_run_tests.c:899:test_inline_read_nsnnwn_large_form_100:PASS
J2735_run_tests.c:900:test_inline_read_nsnnwn_large_form_255:PASS
J2735_run_tests.c:901:test_inline_read_nsnnwn_large_form_256:PASS
J2735_run_tests.c:902:test_inline_read_nsnnwn_large_form_65535:PASS
J2735_run_tests.c:903:test_inline_read_nsnnwn_large_form_4_bytes:PASS
J2735_run_tests.c:904:test_inline_read_nsnnwn_large_form_5_bytes_error:PASS
J2735_run_tests.c:905:test_inline_read_nsnnwn_fragmented_error:PASS
J2735_run_tests.c:906:test_inline_read_nsnnwn_nonzero_bit_offset:PASS
J2735_run_tests.c:909:test_inline_skip_extensions_one_slot_none_present:PASS
J2735_run_tests.c:910:test_inline_skip_extensions_one_slot_present:PASS
J2735_run_tests.c:911:test_inline_skip_extensions_two_slots_both_present:PASS
J2735_run_tests.c:912:test_inline_skip_extensions_two_slots_first_only:PASS
J2735_run_tests.c:913:test_inline_skip_extensions_two_slots_second_only:PASS
J2735_run_tests.c:914:test_inline_skip_extensions_empty_content:PASS
J2735_run_tests.c:915:test_inline_skip_extensions_nsnnwn_error:PASS
J2735_run_tests.c:916:test_inline_skip_extensions_length_error:PASS
J2735_run_tests.c:917:test_inline_skip_extensions_nonzero_offset:PASS
J2735_run_tests.c:918:test_inline_skip_extensions_too_many_extensions:PASS
J2735_run_tests.c:1214:test_vehicle_event_flags_non_extended:PASS
J2735_run_tests.c:1215:test_vehicle_event_flags_extended:PASS
J2735_run_tests.c:1226:test_vehicle_event_flags_individual_extended_flags_0_to_4:PASS
J2735_run_tests.c:1227:test_vehicle_event_flags_individual_extended_flags_5_to_9:PASS
J2735_run_tests.c:1228:test_vehicle_event_flags_individual_extended_flags_10_to_13:PASS
J2735_run_tests.c:1229:test_vehicle_event_flags_individual_non_extended_flags_0_to_4:PASS
J2735_run_tests.c:1230:test_vehicle_event_flags_individual_non_extended_flags_5_to_9:PASS
J2735_run_tests.c:1231:test_vehicle_event_flags_individual_non_extended_flags_10_to_13:PASS
J2735_run_tests.c:1238:test_vehicle_event_flags_size_non_extended:PASS
J2735_run_tests.c:1239:test_vehicle_event_flags_size_extended:PASS
J2735_run_tests.c:1248:test_vehicle_event_flags_all_zeros_non_extended:PASS
J2735_run_tests.c:1249:test_vehicle_event_flags_extended_single_jackknife:PASS
J2735_run_tests.c:1250:test_vehicle_event_flags_non_extended_all_root_flags_on_metadata:PASS
J2735_run_tests.c:1251:test_vehicle_event_flags_non_extended_all_root_flags_on_bits:PASS
J2735_run_tests.c:1252:test_vehicle_event_flags_extended_all_zeros:PASS
J2735_run_tests.c:1259:test_vehicle_event_flags_non_extended_alternating_0x1555_metadata:PASS
J2735_run_tests.c:1260:test_vehicle_event_flags_non_extended_alternating_0x1555_0_to_4:PASS
J2735_run_tests.c:1261:test_vehicle_event_flags_non_extended_alternating_0x1555_5_to_9:PASS
J2735_run_tests.c:1262:test_vehicle_event_flags_non_extended_alternating_0x1555_10_to_12:PASS
J2735_run_tests.c:1263:test_vehicle_event_flags_non_extended_alternating_0x0AAA_metadata:PASS
J2735_run_tests.c:1264:test_vehicle_event_flags_non_extended_alternating_0x0AAA_0_to_4:PASS
J2735_run_tests.c:1265:test_vehicle_event_flags_non_extended_alternating_0x0AAA_5_to_9:PASS
J2735_run_tests.c:1266:test_vehicle_event_flags_non_extended_alternating_0x0AAA_10_to_12:PASS
J2735_run_tests.c:1275:test_vehicle_event_flags_single_bit_0_hazard_lights:PASS
J2735_run_tests.c:1276:test_vehicle_event_flags_single_bit_12_airbag:PASS
J2735_run_tests.c:1277:test_vehicle_event_flags_single_bit_7_hard_braking:PASS
J2735_run_tests.c:1278:test_vehicle_event_flags_extended_single_hazard_lights:PASS

-----------------------
63 Tests 0 Failures 0 Ignored 
OK

=== Sanitizer Checks Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

✅ No issues detected


Valgrind Memory Check

Test Output
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o J2735_UPER_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o J2735_internal_DE_VehicleEventFlags_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o J2735_internal_DF_BSMcoreData_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o J2735_internal_DF_IntersectionReferenceID_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o J2735_internal_DF_PathPrediction_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o unity.c
=== Valgrind Memory Check ===
gcc -std=c17 -g -O1 -fno-omit-frame-pointer -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_valgrind \
	J2735_run_tests.c /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o
valgrind \
	--leak-check=full \
	--error-exitcode=1 \
	--show-leak-kinds=all \
	--track-origins=yes \
	/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_valgrind
==2769== Memcheck, a memory error detector
==2769== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==2769== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==2769== Command: /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_valgrind
==2769== 
J2735_run_tests.c:114:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:137:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:138:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:223:test_path_prediction_no_extension:PASS
J2735_run_tests.c:224:test_path_prediction_with_extension:PASS
J2735_run_tests.c:225:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:885:test_inline_read_length_determinant_short_form_min:PASS
J2735_run_tests.c:886:test_inline_read_length_determinant_short_form_max:PASS
J2735_run_tests.c:887:test_inline_read_length_determinant_short_form_typical:PASS
J2735_run_tests.c:888:test_inline_read_length_determinant_long_form_min:PASS
J2735_run_tests.c:889:test_inline_read_length_determinant_long_form_128:PASS
J2735_run_tests.c:890:test_inline_read_length_determinant_long_form_max:PASS
J2735_run_tests.c:891:test_inline_read_length_determinant_fragmented_error:PASS
J2735_run_tests.c:892:test_inline_read_length_determinant_nonzero_bit_offset:PASS
J2735_run_tests.c:895:test_inline_read_nsnnwn_small_form_min:PASS
J2735_run_tests.c:896:test_inline_read_nsnnwn_small_form_max:PASS
J2735_run_tests.c:897:test_inline_read_nsnnwn_small_form_typical:PASS
J2735_run_tests.c:898:test_inline_read_nsnnwn_large_form_64:PASS
J2735_run_tests.c:899:test_inline_read_nsnnwn_large_form_100:PASS
J2735_run_tests.c:900:test_inline_read_nsnnwn_large_form_255:PASS
J2735_run_tests.c:901:test_inline_read_nsnnwn_large_form_256:PASS
J2735_run_tests.c:902:test_inline_read_nsnnwn_large_form_65535:PASS
J2735_run_tests.c:903:test_inline_read_nsnnwn_large_form_4_bytes:PASS
J2735_run_tests.c:904:test_inline_read_nsnnwn_large_form_5_bytes_error:PASS
J2735_run_tests.c:905:test_inline_read_nsnnwn_fragmented_error:PASS
J2735_run_tests.c:906:test_inline_read_nsnnwn_nonzero_bit_offset:PASS
J2735_run_tests.c:909:test_inline_skip_extensions_one_slot_none_present:PASS
J2735_run_tests.c:910:test_inline_skip_extensions_one_slot_present:PASS
J2735_run_tests.c:911:test_inline_skip_extensions_two_slots_both_present:PASS
J2735_run_tests.c:912:test_inline_skip_extensions_two_slots_first_only:PASS
J2735_run_tests.c:913:test_inline_skip_extensions_two_slots_second_only:PASS
J2735_run_tests.c:914:test_inline_skip_extensions_empty_content:PASS
J2735_run_tests.c:915:test_inline_skip_extensions_nsnnwn_error:PASS
J2735_run_tests.c:916:test_inline_skip_extensions_length_error:PASS
J2735_run_tests.c:917:test_inline_skip_extensions_nonzero_offset:PASS
J2735_run_tests.c:918:test_inline_skip_extensions_too_many_extensions:PASS
J2735_run_tests.c:1214:test_vehicle_event_flags_non_extended:PASS
J2735_run_tests.c:1215:test_vehicle_event_flags_extended:PASS
J2735_run_tests.c:1226:test_vehicle_event_flags_individual_extended_flags_0_to_4:PASS
J2735_run_tests.c:1227:test_vehicle_event_flags_individual_extended_flags_5_to_9:PASS
J2735_run_tests.c:1228:test_vehicle_event_flags_individual_extended_flags_10_to_13:PASS
J2735_run_tests.c:1229:test_vehicle_event_flags_individual_non_extended_flags_0_to_4:PASS
J2735_run_tests.c:1230:test_vehicle_event_flags_individual_non_extended_flags_5_to_9:PASS
J2735_run_tests.c:1231:test_vehicle_event_flags_individual_non_extended_flags_10_to_13:PASS
J2735_run_tests.c:1238:test_vehicle_event_flags_size_non_extended:PASS
J2735_run_tests.c:1239:test_vehicle_event_flags_size_extended:PASS
J2735_run_tests.c:1248:test_vehicle_event_flags_all_zeros_non_extended:PASS
J2735_run_tests.c:1249:test_vehicle_event_flags_extended_single_jackknife:PASS
J2735_run_tests.c:1250:test_vehicle_event_flags_non_extended_all_root_flags_on_metadata:PASS
J2735_run_tests.c:1251:test_vehicle_event_flags_non_extended_all_root_flags_on_bits:PASS
J2735_run_tests.c:1252:test_vehicle_event_flags_extended_all_zeros:PASS
J2735_run_tests.c:1259:test_vehicle_event_flags_non_extended_alternating_0x1555_metadata:PASS
J2735_run_tests.c:1260:test_vehicle_event_flags_non_extended_alternating_0x1555_0_to_4:PASS
J2735_run_tests.c:1261:test_vehicle_event_flags_non_extended_alternating_0x1555_5_to_9:PASS
J2735_run_tests.c:1262:test_vehicle_event_flags_non_extended_alternating_0x1555_10_to_12:PASS
J2735_run_tests.c:1263:test_vehicle_event_flags_non_extended_alternating_0x0AAA_metadata:PASS
J2735_run_tests.c:1264:test_vehicle_event_flags_non_extended_alternating_0x0AAA_0_to_4:PASS
J2735_run_tests.c:1265:test_vehicle_event_flags_non_extended_alternating_0x0AAA_5_to_9:PASS
J2735_run_tests.c:1266:test_vehicle_event_flags_non_extended_alternating_0x0AAA_10_to_12:PASS
J2735_run_tests.c:1275:test_vehicle_event_flags_single_bit_0_hazard_lights:PASS
J2735_run_tests.c:1276:test_vehicle_event_flags_single_bit_12_airbag:PASS
J2735_run_tests.c:1277:test_vehicle_event_flags_single_bit_7_hard_braking:PASS
J2735_run_tests.c:1278:test_vehicle_event_flags_extended_single_hazard_lights:PASS

-----------------------
63 Tests 0 Failures 0 Ignored 
OK
==2769== 
==2769== HEAP SUMMARY:
==2769==     in use at exit: 0 bytes in 0 blocks
==2769==   total heap usage: 1 allocs, 1 frees, 4,096 bytes allocated
==2769== 
==2769== All heap blocks were freed -- no leaks are possible
==2769== 
==2769== For lists of detected and suppressed errors, rerun with: -s
==2769== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=== Valgrind Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

✅ No memory issues detected

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a make pre-push command that consolidates all CI validation checks into a single local command, making it easier for contributors to verify their changes before pushing. The implementation auto-detects available GCC (11+) and Clang (13+) compilers and tests with boundary versions (minimum and maximum found).

Changes:

  • Added comprehensive pre-push target that runs format, multi-compiler build/test, cppcheck, clang-tidy, sanitizers, and valgrind in sequence
  • Implemented smart compiler auto-detection using Make's foreach and if functions to test with available GCC 11+ and Clang 13+ versions
  • Reorganized Makefile targets alphabetically for better maintainability
  • Updated all documentation (README, CONTRIBUTING, PR template, Copilot instructions) to reference the new pre-push command, simplifying contributor workflows

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tests/Makefile Added compiler auto-detection logic and comprehensive pre-push target; reorganized all targets alphabetically; improved help text
Makefile Added pre-push target delegation; reorganized targets alphabetically; removed duplicate help text (now delegated to tests/Makefile)
README.md Added make pre-push to the Build & Test command reference
CONTRIBUTING.md Simplified submission steps from 5 to 4 by consolidating test/check commands into single make pre-push command
.github/pull_request_template.md Reduced checklist from 6 items to 4 by replacing 3 separate check items with single make pre-push requirement
.github/copilot-instructions.md Updated Definition of Done to reference make pre-push instead of just make all

@xqgex xqgex merged commit 6697fbb into main Jan 31, 2026
24 of 25 checks passed
@xqgex xqgex deleted the make_pre_push branch January 31, 2026 05:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant