Skip to content

feat!: S10.09 data-member lowerCamelCase → PascalCase (Tier 4 sweep)#374

Merged
DavidCozens merged 9 commits into
mainfrom
feat/s10-09-data-member-pascalcase
May 15, 2026
Merged

feat!: S10.09 data-member lowerCamelCase → PascalCase (Tier 4 sweep)#374
DavidCozens merged 9 commits into
mainfrom
feat/s10-09-data-member-pascalcase

Conversation

@DavidCozens

@DavidCozens DavidCozens commented May 15, 2026

Copy link
Copy Markdown
Owner

Purpose

Closes #373. Executes the Fix verdict for the member row in
docs/misra-conformance.md — the last cross-cutting naming sweep of
E10 (#12). Tier 4 was re-stated in S10.05 to "PascalCase for all
members" and .clang-tidy was flipped to MemberCase: CamelCase,
which surfaced ~186 lowerCamelCase data-member warnings. This branch
clears them.

analyze-tidy now reports zero readability-identifier-naming member
findings across Core/ and Platform/*/.

Change Description

Sliced into eight cluster commits + one docs commit on this branch
(per discussion in the issue thread). Each cluster commit is a
self-contained, build-green chunk so CodeRabbit can review them one at
a time without exhausting its token budget on a single mega-diff.

# Commit Scope Files API break
1 8dca55b Formatter + EscapedContext (file-local) 1
2 40acb88 Storage cluster — BlockStoreConfig + impls 19 yes
3 4318f53 Buffer cluster + BufferFake 4
4 85e9fde Sender impl bodies (Udp/Stream/Switching/TlsStream + Posix/Winsock/FreeRtos Datagram/TcpStream/Resolver) 13
5 2e9eb7c Sender Config public headers + test fakes (SenderFake/DatagramFake/StreamFake + OpenSSL TlsTestServer/BioPairStream) + BDD 23 yes
6 6691f33 SD cluster — MetaSd/OriginSd/TimeQualitySd + Configs 12 yes
7 2e22be4 Sync + atomics — Posix/Windows/FreeRtosMutex + AtomicCounter + Std/WindowsAtomicU32 7
8 6707035 Top-level public structs — SolidSyslogConfig, Message, Timestamp, Endpoint, TimeQuality, SecurityPolicy.IntegritySize, impl struct SolidSyslog, BddTargetOptions 39 yes
9 b857762 Docs touch-up — CLAUDE.md, misra-conformance.md, DEVLOG.md 3

feat!: because slices 2/5/6/8 each change public Config struct field
names. The integrator change is mechanical (case only — no name
changes) so an integrator's sweep is a single sed pass.

Error messages in Core/Source/SolidSyslogErrorMessages.h that quote
Config field names migrate inside the same slice as the Config itself
(slice 5 picks up UDP sender's 3, slice 6 picks up MetaSd's 1, slice 8
picks up the SolidSyslog top-level 3). BadSetup tests assert on these
literal strings, so they had to move together.

Tier 5 test code that mirrors production names (the *Fake structs,
SenderSpy, DrainTestConfig, ScanFake, FakeBlockDevice,
BddTargetOptions) was renamed alongside the cluster that surfaced it
to keep each commit build-green. Where a test fixture has some
members shared with production and some purely local (e.g.
SenderSpy.Base + .successfulSends + .outage), only the
production-overlapping members moved — Tier 5 explicitly allows the
mixed shape.

Test Evidence

All run against the cpputest gcc dev container after each slice (and
again after slice 9 on the whole branch):

  • build-linux-gcc — 1122 tests, 1120 ran, 2451 checks, 0 failures
  • build-linux-clang (clang-debug) — 1122 tests, 0 failures
  • sanitize-linux-gcc — clean, 1122 tests pass with ASan + UBSan
  • coverage-linux-gcc — 99.5% line coverage (2187 / 2197)
  • analyze-tidy — clean (zero member-kind findings; zero other
    warnings)
  • analyze-cppcheck — clean
  • analyze-format — clean
  • Full debug build target (cmake --build --preset debug) — builds
    SolidSyslogBddTarget, BddTargetTests, OpenSslIntegrationTests
    alongside the test executable

Windows / BDD / FreeRTOS jobs are CI's responsibility per the project
workflow.

Areas Affected

  • Public API headers (Core/Interface/, Platform/*/Interface/)
    — every Config struct field changes from lowerCamelCase to
    PascalCase
  • Implementation bodies (Core/Source/, Platform/*/Source/) —
    every struct's data members rename; vtable function-pointer
    members were already PascalCase
  • Tests (Tests/, Tests/Bdd/Targets/, Tests/OpenSslIntegration/,
    Tests/FreeRtos/) — test fakes and call-site updates
  • BDD targets (Bdd/Targets/{Common,Linux,Windows,FreeRtos}/) —
    configure-call sites + BddTargetOptions / BddTargetWindowsOptions
  • DocsCLAUDE.md (one-line summary), docs/misra-conformance.md
    (member row + sweep table), DEVLOG.md (2026-05-15 session entry)

Closes #373.

Summary by CodeRabbit

Release Notes

  • Refactor

    • Extensive internal code refactoring initiative to improve consistency and standardization throughout the codebase. No user-facing functionality changes.
  • Tests

    • Comprehensive test suite updates to align with internal code restructuring efforts.
  • Documentation

    • Updated documentation reflecting naming conventions and internal code organization standards.

Review Change Stack

Slice 1 of the Tier 4 data-member rename: file-local members of
SolidSyslogFormatter (Size, Position, Buffer) and EscapedContext
(Formatter, Source, SourcePos, DecodedLength, MaxDecodedLength,
Exhausted), all confined to Core/Source/SolidSyslogFormatter.c.

No public API change — both structs have their bodies in the
.c file; the Formatter type is opaque to integrators.
Slice 2 of the Tier 4 data-member rename. Renames members of every
struct in the storage cluster to PascalCase:

  - public  : SolidSyslogBlockStoreConfig (API break)
  - internal: BlockSequenceConfig, BlockSequence, BlockPresence,
              RecordStore, SolidSyslogBlockStore, SolidSyslogNullStore,
              SolidSyslogFileBlockDevice, OpenHandle,
              SolidSyslogPosixFile, SolidSyslogWindowsFile,
              SolidSyslogFatFsFile

Updates declarations, every member access, and designated-initialiser
sites across Core/Source, Platform/{Posix,Windows,FatFs}/Source, the
public BlockStore header, related unit tests, and the three BDD
targets. Test-fixture structs that share storage member names
(FakeBlockDevice, ScanFake, DrainTestConfig, SenderSpy) follow suit
for consistency.

API break: the BlockStoreConfig field names change case. Integrators
update designated initialisers accordingly.
Slice 3 of the Tier 4 data-member rename. Renames members of every
struct in the buffer cluster to PascalCase:

  - SolidSyslogNullBuffer (Base, Sender)
  - SolidSyslogCircularBuffer (Base, Mutex, Capacity, Head, Tail,
    WrapPoint, Storage)
  - SolidSyslogPosixMessageQueueBuffer (Base, Mq, NameStorage,
    MaxMessageSize)
  - test fixture BufferFake (Base, Stored, StoredSize, Pending)

All four structs have private bodies (impl files), so no public-API
change in this slice. Buffer factory signatures
(SolidSyslogNullBuffer_Create, SolidSyslogCircularBuffer_Create,
SolidSyslogPosixMessageQueueBuffer_Create) are untouched.
Slice 4 of the Tier 4 data-member rename. Renames members of every
sender/transport IMPL body to PascalCase. Public Config headers and
test fakes are deferred to slice 5 so this commit stays free of
API-breaking changes and test-fixture churn.

Impls touched:
  - SolidSyslogUdpSender, StreamSender, SwitchingSender
  - SolidSyslogTlsStream (OpenSSL)
  - PosixTcpStream, PosixDatagram, GetAddrInfoResolver
  - WinsockTcpStream, WinsockDatagram, WinsockResolver
  - FreeRtosTcpStream, FreeRtosDatagram, FreeRtosStaticResolver

Each impl owns Base, embedded Config (where applicable), and the
small handful of state members it needs (Fd/Socket/Connected/
LastEndpointVersion/CurrentSender/Ctx/Ssl/BioMethod/AddrStorage/
Octets).
Slice 5 of the Tier 4 data-member rename. Completes the sender cluster
by renaming all public Config struct members (API break) plus their
matching access sites in tests, BDD targets, and the four impl files
that embed Config by value.

Public Configs renamed:
  - SolidSyslogUdpSenderConfig
  - SolidSyslogStreamSenderConfig
  - SolidSyslogSwitchingSenderConfig
  - SolidSyslogTlsStreamConfig

Test fakes renamed:
  - SenderFake, DatagramFake, StreamFake
  - TlsTestServer, TlsTestServerConfig, BioPairStream

`transport` was renamed only where it accesses TlsStreamConfig —
`options->transport` on BddTargetOptions stays lowerCamelCase until
that struct moves in a later slice.

Error messages in SolidSyslogErrorMessages.h that quote UDP sender
Config field names follow the rename so the BadSetup integration
tests keep matching.
Slice 6 of the Tier 4 data-member rename. Renames every struct in the
structured-data cluster:

  - SolidSyslogMetaSd / MetaSdConfig (API break)
  - SolidSyslogOriginSd / OriginSdConfig (API break)
  - SolidSyslogTimeQualitySd

Error message SOLIDSYSLOG_ERROR_MSG_METASD_CREATE_NULL_COUNTER
follows the rename so MetaSd BadSetup tests keep matching.
Slice 7 of the Tier 4 data-member rename. Renames members of the
mutex and atomics impls (all private bodies, no public API change):

  - SolidSyslogPosixMutex     (Base, Mutex)
  - SolidSyslogWindowsMutex   (Base, Section)
  - SolidSyslogFreeRtosMutex  (Base, Buffer)
  - SolidSyslogAtomicCounter  (Storage, Slot)
  - SolidSyslogAtomicU32      (Value) — Std/Windows variants

NullMutex has no per-impl struct (uses SolidSyslogMutex vtable
directly); Address is opaque-storage only. Tests updated for the
counter access sites; Mutex/AtomicU32 tests do not touch members.
Slice 8 of the Tier 4 data-member rename — final code sweep. Renames
every remaining public-struct data member to PascalCase:

  - SolidSyslogConfig (API break, full slate of 9 fields)
  - SolidSyslogMessage (Facility/Severity/MessageId/Msg)
  - SolidSyslogTimestamp (Year/Month/.../UtcOffsetMinutes)
  - SolidSyslogEndpoint (Host/Port)
  - SolidSyslogTimeQuality (TzKnown/IsSynced/SyncAccuracyMicroseconds)
  - SolidSyslogSecurityPolicy.IntegritySize (vtable members already
    PascalCase)
  - struct SolidSyslog opaque impl in SolidSyslog.c
  - BddTargetOptions / BddTargetWindowsOptions (Tier 3 BDD CLI options
    that mirror the production names — kept consistent with their
    Config destinations)

Error messages in SolidSyslogErrorMessages.h that quote SolidSyslogConfig
field names follow the rename so BadSetup tests keep matching.

readability-identifier-naming kind=member should now report zero
findings across Core/ and Platform/*/. Slice 9 follows with the
NAMING.md / misra-conformance.md / CLAUDE.md doc touch-up plus DEVLOG.
Final slice of the Tier 4 data-member rename. Updates:

  - CLAUDE.md one-line naming summary: members move from
    lowerCamelCase into the PascalCase bucket alongside vtable
    function-pointer members
  - docs/misra-conformance.md: `member` row annotated as
    "Fix — landed in S10.09", sweep-volume table updated
    (186 → 0)
  - DEVLOG.md: 2026-05-15 session entry covering all eight
    cluster slices, the test-fixture / BddTargetOptions
    collisions surfaced along the way, and the error-message
    co-migration pattern

analyze-tidy now reports zero `readability-identifier-naming`
member findings across Core/ and Platform/*/.
@coderabbitai

coderabbitai Bot commented May 15, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fe830385-59fd-4a42-97b8-319faa445931

📥 Commits

Reviewing files that changed from the base of the PR and between 004ee49 and b857762.

📒 Files selected for processing (98)
  • Bdd/Targets/Common/BddTargetMtlsConfig.c
  • Bdd/Targets/Common/BddTargetTlsConfig.c
  • Bdd/Targets/Common/BddTargetTlsSender_OpenSsl_PosixTcp.c
  • Bdd/Targets/Common/BddTargetTlsSender_OpenSsl_WinsockTcp.c
  • Bdd/Targets/FreeRtos/main.c
  • Bdd/Targets/Linux/BddTargetCommandLine.c
  • Bdd/Targets/Linux/BddTargetCommandLine.h
  • Bdd/Targets/Linux/BddTargetTcpConfig.c
  • Bdd/Targets/Linux/BddTargetUdpConfig.c
  • Bdd/Targets/Linux/main.c
  • Bdd/Targets/Windows/BddTargetWindows.c
  • Bdd/Targets/Windows/BddTargetWindowsCommandLine.c
  • Bdd/Targets/Windows/BddTargetWindowsCommandLine.h
  • CLAUDE.md
  • Core/Interface/SolidSyslog.h
  • Core/Interface/SolidSyslogBlockStore.h
  • Core/Interface/SolidSyslogConfig.h
  • Core/Interface/SolidSyslogEndpoint.h
  • Core/Interface/SolidSyslogMetaSd.h
  • Core/Interface/SolidSyslogOriginSd.h
  • Core/Interface/SolidSyslogSecurityPolicyDefinition.h
  • Core/Interface/SolidSyslogStreamSender.h
  • Core/Interface/SolidSyslogSwitchingSender.h
  • Core/Interface/SolidSyslogTimeQuality.h
  • Core/Interface/SolidSyslogTimestamp.h
  • Core/Interface/SolidSyslogUdpSender.h
  • Core/Source/BlockSequence.c
  • Core/Source/BlockSequence.h
  • Core/Source/RecordStore.c
  • Core/Source/RecordStore.h
  • Core/Source/SolidSyslog.c
  • Core/Source/SolidSyslogAtomicCounter.c
  • Core/Source/SolidSyslogBlockStore.c
  • Core/Source/SolidSyslogCircularBuffer.c
  • Core/Source/SolidSyslogErrorMessages.h
  • Core/Source/SolidSyslogFileBlockDevice.c
  • Core/Source/SolidSyslogFormatter.c
  • Core/Source/SolidSyslogMetaSd.c
  • Core/Source/SolidSyslogNullBuffer.c
  • Core/Source/SolidSyslogNullStore.c
  • Core/Source/SolidSyslogOriginSd.c
  • Core/Source/SolidSyslogStreamSender.c
  • Core/Source/SolidSyslogSwitchingSender.c
  • Core/Source/SolidSyslogTimeQualitySd.c
  • Core/Source/SolidSyslogUdpSender.c
  • DEVLOG.md
  • Platform/Atomics/Source/SolidSyslogStdAtomicU32.c
  • Platform/FatFs/Source/SolidSyslogFatFsFile.c
  • Platform/FreeRtos/Source/SolidSyslogFreeRtosDatagram.c
  • Platform/FreeRtos/Source/SolidSyslogFreeRtosMutex.c
  • Platform/FreeRtos/Source/SolidSyslogFreeRtosStaticResolver.c
  • Platform/FreeRtos/Source/SolidSyslogFreeRtosTcpStream.c
  • Platform/OpenSsl/Interface/SolidSyslogTlsStream.h
  • Platform/OpenSsl/Source/SolidSyslogTlsStream.c
  • Platform/Posix/Source/SolidSyslogGetAddrInfoResolver.c
  • Platform/Posix/Source/SolidSyslogPosixClock.c
  • Platform/Posix/Source/SolidSyslogPosixDatagram.c
  • Platform/Posix/Source/SolidSyslogPosixFile.c
  • Platform/Posix/Source/SolidSyslogPosixMessageQueueBuffer.c
  • Platform/Posix/Source/SolidSyslogPosixMutex.c
  • Platform/Posix/Source/SolidSyslogPosixTcpStream.c
  • Platform/Windows/Source/SolidSyslogWindowsAtomicU32.c
  • Platform/Windows/Source/SolidSyslogWindowsClock.c
  • Platform/Windows/Source/SolidSyslogWindowsFile.c
  • Platform/Windows/Source/SolidSyslogWindowsMutex.c
  • Platform/Windows/Source/SolidSyslogWinsockDatagram.c
  • Platform/Windows/Source/SolidSyslogWinsockResolver.c
  • Platform/Windows/Source/SolidSyslogWinsockTcpStream.c
  • Tests/Bdd/Targets/BddTargetCommandLineTest.cpp
  • Tests/Bdd/Targets/BddTargetServiceThreadTest.cpp
  • Tests/Bdd/Targets/BddTargetWindowsCommandLineTest.cpp
  • Tests/BlockSequenceTest.cpp
  • Tests/BufferFake.c
  • Tests/DatagramFake.c
  • Tests/FreeRtos/SolidSyslogFreeRtosStaticResolverTest.cpp
  • Tests/OpenSslIntegration/BioPairStream.c
  • Tests/OpenSslIntegration/SolidSyslogTlsStreamIntegrationTest.cpp
  • Tests/OpenSslIntegration/TlsTestServer.c
  • Tests/OpenSslIntegration/TlsTestServer.h
  • Tests/SenderFake.c
  • Tests/SolidSyslogAtomicCounterTest.cpp
  • Tests/SolidSyslogBlockDeviceTest.cpp
  • Tests/SolidSyslogBlockStoreDrainOrderingTest.cpp
  • Tests/SolidSyslogBlockStorePosixTest.cpp
  • Tests/SolidSyslogBlockStoreTest.cpp
  • Tests/SolidSyslogCrc16PolicyTest.cpp
  • Tests/SolidSyslogMetaSdTest.cpp
  • Tests/SolidSyslogNullSecurityPolicyTest.cpp
  • Tests/SolidSyslogOriginSdTest.cpp
  • Tests/SolidSyslogPosixClockTest.cpp
  • Tests/SolidSyslogStreamSenderTest.cpp
  • Tests/SolidSyslogTest.cpp
  • Tests/SolidSyslogTimeQualitySdTest.cpp
  • Tests/SolidSyslogTlsStreamTest.cpp
  • Tests/SolidSyslogUdpSenderTest.cpp
  • Tests/SolidSyslogWindowsClockTest.cpp
  • Tests/StreamFake.c
  • docs/misra-conformance.md

📝 Walkthrough

Walkthrough

Mechanical PascalCase renames for struct members across public headers and all consumers, including core, storage, transports/senders, TLS, platform adapters, BDD targets, tests, and docs. No behavioral changes; APIs updated to new field casing.

Changes

Global member-casing refactor

Layer / File(s) Summary
PascalCase sweep across interfaces and consumers
Core/Interface/*, Core/Source/*, Platform/*/*, Bdd/Targets/*, Tests/*, docs/*
Renames struct data members to PascalCase and updates all initializers, accesses, and messages; functionality unchanged.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Client as Public headers (rgba(66, 135, 245, 0.5))
  participant Core as Core sources (rgba(76, 175, 80, 0.5))
  participant Plat as Platform adapters (rgba(255, 193, 7, 0.5))
  participant Tests as Test suites (rgba(244, 67, 54, 0.5))
  Client->>Core: PascalCase members exported
  Core->>Plat: Propagate struct field renames
  Core->>Tests: Update fakes and assertions
  Plat-->>Tests: Adjust platform-facing tests
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related issues

Possibly related PRs

Poem

A rabbit taps keys with a confident pace,
Polishing structs to a PascalCase grace.
Buffers and senders now shine in their names,
Tests nod along, still playing the same games.
From headers to HALs, a tidy embrace—
Ship it! says bunny, with whiskered aplomb and haste. 🐇✨

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/s10-09-data-member-pascalcase

@github-actions

Copy link
Copy Markdown
Contributor

☀️   Quality Summary

   🚦   build-linux-gcc: 100% successful (✔️ 1126 passed, 🙈 2 skipped)
   🚦   build-freertos-host-tdd: 100% successful (✔️ 1246 passed, 🙈 2 skipped)
   🚦   build-linux-clang: 100% successful (✔️ 1078 passed, 🙈 2 skipped)
   🚦   sanitize-linux-gcc: 100% successful (✔️ 1078 passed, 🙈 2 skipped)
   🚦   integration-linux-openssl: 100% successful (✔️ 9 passed)
   🚦   integration-windows-openssl: 100% successful (✔️ 9 passed)
   🚦   bdd-linux-syslog-ng: 94% successful (✔️ 46 passed, 🙈 3 skipped)
   🚦   bdd-windows-otel: 90% successful (✔️ 44 passed, 🙈 5 skipped)
   🚦   bdd-freertos-qemu: 73% successful (✔️ 36 passed, 🙈 13 skipped)
   🚦   build-windows-msvc: 100% successful (✔️ 982 passed, 🙈 1 skipped)
   🚦   build-linux-tunable-override: 100% successful (✔️ 1078 passed, 🙈 2 skipped)
   ⚠️   Clang-Tidy: 83 warnings (normal: 83)
   ⚠️   CPPCheck: No warnings


Created by Quality Monitor v1.14.0 (#f3859fd). More details are shown in the GitHub Checks Result.

@DavidCozens DavidCozens merged commit f96064d into main May 15, 2026
20 checks passed
@DavidCozens DavidCozens deleted the feat/s10-09-data-member-pascalcase branch May 15, 2026 16:20
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.

S10.09: Data-member lowerCamelCase → PascalCase (Tier 4 sweep)

1 participant