Repository navigation
Conversation
Trace continued lines to their directive before applying the standalone brace warning. Preserve the existing checks for ordinary continued code. Fixes cpplint#294.
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Directive continuation handling and validation cpplint.py, cpplint_unittest.py, CHANGELOG.rst |
CheckBraces follows continued lines to identify preprocessor directives. Tests cover single-line and continued directives, trailing comments, and ordinary code after directives. The changelog records the fix. |
Priority:
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Bug fix · Severity of issue fixed: Low
Merge Risk: 
Minimal · up to d3f40
-
The brace-warning fix appears ready to merge after normal checks.
Pre-merge checks: 
4 · 
1
-
Failed checks: 1 warning Passed checks: 4 passed-
Full details: Linked Issues check
-
Explanation
The change satisfies issue
#294.CheckBracesfollows backslash continuations to the originating preprocessor directive before applying thewhitespace/bracescheck. This suppresses the warning for a brace after a multiline OpenMP pragma. New tests cover multiline pragmas, comments, blank lines, and ordinary code that must still warn.
Full details: Out of Scope Changes check
-
Explanation
The reported changes stay within issue
#294. Thecpplint.pychange implements the required brace-check behavior. Thecpplint_unittest.pycases provide regression coverage. TheCHANGELOG.rstentry documents the fix. No unrelated change is shown.
-
Full details: Docstring Coverage
-
Explanation
Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 2 files. (1 skipped: 1 unsupported.)
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
-
Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
Csq57
left a comment
There was a problem hiding this comment.
I independently reviewed PR #480 at pinned head d3f4003 against develop (926bf4b), using GitHub-hosted Ubuntu, Windows, and macOS with Python 3.12 and 3.15.1 (pytest==9.1.1).
Full-suite comparison (consistent across all three operating systems):
Source | Python 3.12 | Python 3.15.1 -- | -- | -- Base develop | 231 passed | 227 passed, 4 failed PR #480 | 238 passed | 234 passed, 4 failedI also ran independent CheckBraces reproductions. Two- and three-line OpenMP directives produce the unwanted whitespace/braces warning on the base but not on this PR. Single-line pragmas remain unaffected, while ordinary if statements, continued if conditions, and separate if statements following pragmas still report the expected warning.
The four Python 3.15.1 failures are identical on the base and PR branches and involve the existing os.path.commonprefix() deprecation warnings. They are unrelated to this PR's changes.
One non-blocking observation: the continuation logic also exempts braces following multiline #define directives. This appears consistent with the checker's existing exemption for immediately preceding preprocessor directives, but an additional regression test could document the intended behavior.
Independent evidence:
https://github.com/Csq57/ai-python-repository-stabilization-case-study/actions/runs/40453763938
The comparison workflow passed, but the Python 3.15.1 pytest runs themselves retained their four known failures.
This review was prepared with AI assistance and grounded in actual independent CI executions.
Approved for the scoped Issue #294 fix based on the tested head.
A brace on its own line is allowed after a preprocessor directive, but the check only looks at its last physical line. Splitting an OpenMP pragma with a backslash therefore produces a
whitespace/braceswarning.Follow line continuations back to the start of the directive. The other checks still use the original preceding line. Regression cases cover two- and three-line pragmas, comments and blank lines, and ordinary code that must continue to warn.
Fixes #294.
Validation: 238 tests passed with 96.47% coverage on Python 3.12; Ruff check/format, pylint, and mypy passed. The new regression cases fail on the base revision and pass with the fix.
Summary by CodeRabbit
ifstatements following a directive.