Skip to content

Code health: lexical C++ style checks on added lines - #94

Merged
dayfine merged 3 commits into
mainfrom
devtools/code-health-style
Oct 31, 2026
Merged

dayfine merged 3 commits into
mainfrom
devtools/code-health-style

Conversation

@dayfine

@dayfine dayfine commented Oct 31, 2026 •

Copy link
Copy Markdown
Owner

Depends on #82

Adds the mechanical rules from the C++ style notes (#93, "Checkable → Could add to code_health") to devtools/code_health, checked only on lines a change adds.

Testing

  • python -m unittest discover -s devtools/code_health/tests: 76 pass (26 new in test_style.py, one new CLI case).
  • Ran over all 3,123 C++ files as if new, and over the diffs of the 66 open fork PRs, and tuned out the false positives found (typedef'd C structs, operator==, primary templates, nested member structs, comment cross-references).

🤖 Generated with Claude Code

https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E

dayfine and others added 3 commits October 30, 2026 00:50
…rface check

A class nested in another class, or in a detail or anonymous namespace, is an
implementation detail such as a type-erasure base, not an interface others
implement. MoveOnlyFunction's private Callable base was flagged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Check the lines a change adds for the upstream bans (std::filesystem,
std::thread, std::mutex, std::async), control-flow brace formatting, and
the Abseil tips adopted in the fork's C++ style notes: mutable globals
(#103), new/delete (#126), std::bind (#108), return std::move(local)
(#120), top-level const by-value header parameters (#109), bool
parameters (#94), header using-directives (#153) and forward
declarations. A comment that describes a neighbouring function is an
advisory.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Base automatically changed from devtools/code-health-nested to main October 31, 2026 19:21
@dayfine
dayfine marked this pull request as ready for review October 31, 2026 19:22
dayfine added a commit that referenced this pull request Oct 31, 2026
@dayfine
dayfine merged commit 25edc8e into main Oct 31, 2026
14 checks passed
dayfine added a commit that referenced this pull request Oct 31, 2026
choose_launch_wait() now takes the previous GameLaunch, and
start_game_before_home() takes the LaunchWait it returns, so neither
has two bool parameters (code health, TotW #94).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
dayfine added a commit that referenced this pull request Nov 1, 2026
* Code health: skip nested and detail classes in the single-method interface check (#82)

A class nested in another class, or in a detail or anonymous namespace, is an
implementation detail such as a type-erasure base, not an interface others
implement. MoveOnlyFunction's private Callable base was flagged.


Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Code health: lexical C++ style checks on added lines (#94)

* Code health: skip nested and detail classes in the single-method interface check

A class nested in another class, or in a detail or anonymous namespace, is an
implementation detail such as a type-erasure base, not an interface others
implement. MoveOnlyFunction's private Callable base was flagged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E

* Code health: lexical C++ style checks on added lines

Check the lines a change adds for the upstream bans (std::filesystem,
std::thread, std::mutex, std::async), control-flow brace formatting, and
the Abseil tips adopted in the fork's C++ style notes: mutable globals
(#103), new/delete (#126), std::bind (#108), return std::move(local)
(#120), top-level const by-value header parameters (#109), bool
parameters (#94), header using-directives (#153) and forward
declarations. A comment that describes a neighbouring function is an
advisory.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* code_health: match functions to their base by name, not by signature (#95)

Changing a parameter's type (std::function to MoveOnlyFunction in #90) changed
the function's key, so an existing 133-line constructor was held to the new
limit of 50 instead of its base length. Functions now match on their qualified
name without parameters; messages still show the full signature.


Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Settings: default audio display and collapsed console settings

Two global settings for people who run many programs on one lab machine:
"Default Audio Display" (Audio Pipeline group) is what a program's console
shows for its audio until that console's own setting is saved, so a new
panel no longer opens with the frequency bars; and "Start with console
settings collapsed" folds each program's "Console N Settings" box at
creation, so the video is at the top. Both default to today's behavior.

AudioOption takes its initial display type from the global setting
instead of a fixed FREQ_BARS; a panel's saved value still wins.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
(cherry picked from commit 92d1ed3c6f6fa0468827ab15c51ec3cc71f01d32)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
dayfine added a commit that referenced this pull request Nov 1, 2026
…104)

* Code health: skip nested and detail classes in the single-method interface check (#82)

A class nested in another class, or in a detail or anonymous namespace, is an
implementation detail such as a type-erasure base, not an interface others
implement. MoveOnlyFunction's private Callable base was flagged.

Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E



* Code health: lexical C++ style checks on added lines (#94)

* Code health: skip nested and detail classes in the single-method interface check

A class nested in another class, or in a detail or anonymous namespace, is an
implementation detail such as a type-erasure base, not an interface others
implement. MoveOnlyFunction's private Callable base was flagged.


Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E

* Code health: lexical C++ style checks on added lines

Check the lines a change adds for the upstream bans (std::filesystem,
std::thread, std::mutex, std::async), control-flow brace formatting, and
the Abseil tips adopted in the fork's C++ style notes: mutable globals
(#103), new/delete (#126), std::bind (#108), return std::move(local)
(#120), top-level const by-value header parameters (#109), bool
parameters (#94), header using-directives (#153) and forward
declarations. A comment that describes a neighbouring function is an
advisory.


Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E

---------



* code_health: match functions to their base by name, not by signature (#95)

Changing a parameter's type (std::function to MoveOnlyFunction in #90) changed
the function's key, so an existing 133-line constructor was held to the new
limit of 50 instead of its base length. Functions now match on their qualified
name without parameters; messages still show the full signature.

Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E



* Settings: default audio display and collapsed console settings

Two global settings for people who run many programs on one lab machine:
"Default Audio Display" (Audio Pipeline group) is what a program's console
shows for its audio until that console's own setting is saved, so a new
panel no longer opens with the frequency bars; and "Start with console
settings collapsed" folds each program's "Console N Settings" box at
creation, so the video is at the top. Both default to today's behavior.

AudioOption takes its initial display type from the global setting
instead of a fixed FREQ_BARS; a panel's saved value still wins.


Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
(cherry picked from commit 92d1ed3c6f6fa0468827ab15c51ec3cc71f01d32)

---------


(cherry picked from commit 0e737fb)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@dayfine
dayfine deleted the devtools/code-health-style branch November 3, 2026 05:46
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