feat!: S10.09 data-member lowerCamelCase → PascalCase (Tier 4 sweep)#374
Conversation
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/*/.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (98)
📝 WalkthroughWalkthroughMechanical 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. ChangesGlobal member-casing refactor
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
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes Possibly related issues
Possibly related PRs
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
|
☀️ Quality Summary 🚦 build-linux-gcc: 100% successful (✔️ 1126 passed, 🙈 2 skipped) Created by Quality Monitor v1.14.0 (#f3859fd). More details are shown in the GitHub Checks Result. |
Purpose
Closes #373. Executes the Fix verdict for the member row in
docs/misra-conformance.md— the last cross-cutting naming sweep ofE10 (#12). Tier 4 was re-stated in S10.05 to "PascalCase for all
members" and
.clang-tidywas flipped toMemberCase: CamelCase,which surfaced ~186 lowerCamelCase data-member warnings. This branch
clears them.
analyze-tidynow reports zeroreadability-identifier-namingmemberfindings across
Core/andPlatform/*/.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.
8dca55b40acb88BlockStoreConfig+ impls4318f53BufferFake85e9fde2e9eb7c6691f332e22be46707035SolidSyslogConfig,Message,Timestamp,Endpoint,TimeQuality,SecurityPolicy.IntegritySize, implstruct SolidSyslog,BddTargetOptionsb857762feat!:because slices 2/5/6/8 each change public Config struct fieldnames. 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.hthat quoteConfig 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 itto 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 theproduction-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 failuresbuild-linux-clang(clang-debug) — 1122 tests, 0 failuressanitize-linux-gcc— clean, 1122 tests pass with ASan + UBSancoverage-linux-gcc— 99.5% line coverage (2187 / 2197)analyze-tidy— clean (zero member-kind findings; zero otherwarnings)
analyze-cppcheck— cleananalyze-format— cleancmake --build --preset debug) — buildsSolidSyslogBddTarget, BddTargetTests, OpenSslIntegrationTests
alongside the test executable
Windows / BDD / FreeRTOS jobs are CI's responsibility per the project
workflow.
Areas Affected
Core/Interface/,Platform/*/Interface/)— every Config struct field changes from lowerCamelCase to
PascalCase
Core/Source/,Platform/*/Source/) —every struct's data members rename; vtable function-pointer
members were already PascalCase
Tests/,Tests/Bdd/Targets/,Tests/OpenSslIntegration/,Tests/FreeRtos/) — test fakes and call-site updatesBdd/Targets/{Common,Linux,Windows,FreeRtos}/) —configure-call sites +
BddTargetOptions/BddTargetWindowsOptionsCLAUDE.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
Tests
Documentation