Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 30 additions & 8 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,21 +82,26 @@ reviews:
Only flag a NEW deviation not covered there.

Naming (docs/NAMING.md tiers):
- Public functions `SolidSyslogClass_Function`; public types
`SolidSyslogClass`; public macros/enum constants
`SOLIDSYSLOG_SCREAMING_SNAKE`; file-scope statics `Class_Function`
/ `CLASS_SCREAMING_SNAKE`; struct members `PascalCase` (data AND
vtable function-pointer members alike); locals/params
`lowerCamelCase`.
- Tier 1 is decided by linkage, not by whether an integrator is meant
to call the identifier: anything declared in an Interface/ header,
and anything with external linkage declared in a `.c`, takes the
prefix — including a library-internal class that spans two
translation units from a `Core/Source/` `*Private.h`
(SolidSyslogRecordStore, SolidSyslogBlockSequence). Functions
`SolidSyslogClass_Function`; types `SolidSyslogClass`; macros/enum
constants `SOLIDSYSLOG_SCREAMING_SNAKE`.
- File-scope statics `Class_Function` / `CLASS_SCREAMING_SNAKE`;
struct members `PascalCase` (data AND vtable function-pointer
members alike); locals/params `lowerCamelCase`.
- The this-pointer is the FIRST parameter, named by its declared type:
`self` when the type is the concrete class, `base` when it is the
abstract base struct. Flag any function that puts state after other
args, or names the this-pointer anything else.
- No `typedef struct` for project structs — refer to structs by tag.
Typedefs allowed only for enums and function-pointer types.
- No Hungarian; no `p`/`P` prefix or `Ptr` suffix on pointers; no
single-letter identifiers; out-params `outX`; booleans `isX`/`hasX`/
`canX`; no lazy abbreviations (`buffer` not `buf`) but domain terms
single-letter identifiers; booleans `isX`/`hasX`/`canX`; no lazy
abbreviations (`buffer` not `buf`) but domain terms
(tls/tcp/udp/crc/mq/dns/RFC field names) are real names, keep them.

Clean Code:
Expand Down Expand Up @@ -177,6 +182,23 @@ reviews:
paths passed to CreateProcess; `127.0.0.1` not `localhost`. Prefer
test-side portability fixes over changing production semantics.

# ---------------------------------------------------------------------
# Build files — CMake, make and workflows. These matched no entry until
# now, so nothing was asking anything of them.
# ---------------------------------------------------------------------
- path: "**/{CMakeLists.txt,Makefile,*.mk,*.cmake,*.yml,*.yaml}"
instructions: |
Build, make and CI files. Two things to hold:
- Naming follows docs/NAMING.md: options, cache variables and tunables
are `SOLIDSYSLOG_SCREAMING_SNAKE`, and a platform registry token is
spelled whole, exactly as its option spells it (`SOLIDSYSLOG_OPENSSL`,
never `SOLIDSYSLOG_OPEN_SSL`).
- A repo-relative path quoted here must resolve.
`scripts/check_references.py` asserts this in the docs-build lane, so
flag the ones it cannot see: a path built up from a variable, and a
path inside a shell block, which it skips because the working
directory there is the job's rather than the repository's.

# ---------------------------------------------------------------------
# Docs — prose. Keep the tier model and conventions self-consistent.
# ---------------------------------------------------------------------
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -801,6 +801,13 @@ jobs:
- name: Check the docs match what the code declares
run: python3 scripts/check_platform_docs.py

# A path written in code font in a sentence, or in a CMake list, a
# Compose mount or a path filter, is text nothing reads back out — the
# link check below sees Markdown links only. This asserts every such path
# still exists, so a rename cannot leave a green reference to nothing.
- name: Check the paths documents and build files name exist
run: python3 scripts/check_references.py

# Guard the build hooks against regression — the source-link rewrite's
# Markdown parsing, and the meta-description map's nav validation.
# Image digest below is mkdocs-mkdoxy sha-34173c0 (see docs/containers.md).
Expand Down
6 changes: 3 additions & 3 deletions Bdd/Targets/FreeRtos/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ UART command channel with `set NAME VALUE`, flip the active transport at
runtime with `switch udp` / `switch tcp` / `switch tls` / `switch mtls`
(routed through `BddTargetSwitchConfig`), emit N RFC 5424 messages with
`send N`, exit cleanly with `quit`. See
[`Bdd/README.md`](../../Bdd/README.md) for how Behave pipes these
[`Bdd/README.md`](../../../Bdd/README.md) for how Behave pipes these
commands through `qemu-system-arm`'s stdio UART.

**Persistent store-and-forward** is wired via the ChaN FatFs adapter
Expand Down Expand Up @@ -46,7 +46,7 @@ syscalls, mps2-an385 linker script, startup) and `cmake/` the
the cross-target `../Common/` pack (`Bdd/Targets/Common/`) since S29.01,
shared with the lwIP BDD target. The `freertos-cross`
CMake preset and the `freertos-target` devcontainer service
([`docs/containers.md`](../../docs/containers.md)) carry everything
([`docs/containers.md`](../../../docs/containers.md)) carry everything
needed to build and run.

## Tuning for your MCU
Expand All @@ -71,7 +71,7 @@ all equivalent).
The simplest path. Switch into the FreeRTOS target devcontainer and use
the standard Ctrl+Shift+B / F5 keys:

1. In [.devcontainer/devcontainer.json](../../.devcontainer/devcontainer.json),
1. In [.devcontainer/devcontainer.json](../../../.devcontainer/devcontainer.json),
change `"service": "gcc"` to `"service": "freertos-target"`.
2. `Ctrl+Shift+P` → "Dev Containers: Rebuild Container".
3. **Build** — `Ctrl+Shift+B` runs the `build and test` task, which under
Expand Down
4 changes: 2 additions & 2 deletions docs/misra-deviations.md
Original file line number Diff line number Diff line change
Expand Up @@ -429,13 +429,13 @@ Raised 2026-05-14, approved 2026-05-15 by the project owner, David Cozens. Recor
## D.004 — Rule 18.4: pointer arithmetic on record buffers (retired)

**Retired in S10.19.** This deviation authorised `uint8_t*` pointer arithmetic in
`Core/Source/RecordStore.c`, where four field-offset helpers walked the
`Core/Source/SolidSyslogRecordStore.c`, where four field-offset helpers walked the
`[magic][length][message]` record layout by adding an offset to a base address.
S10.19 rewrote them to take the address of an indexed element (`&base[OFFSET]`)
instead. That is the same address by definition, but rule 18.4 fires on the `+`,
`-`, `+=` and `-=` operators specifically rather than on subscripting, so the
finding no longer arises and the deviation had nothing left to authorise.
cppcheck-misra reports no 18.4 finding in `RecordStore.c`; the suppression was
cppcheck-misra reports no 18.4 finding in `SolidSyslogRecordStore.c`; the suppression was
removed from `misra_suppressions.txt` at the same time.

The entry is kept, rather than the number reused, so the register has no gaps and
Expand Down
Loading
Loading