Skip to content

add fix for findGotoLabel in misra.py - #8876

Open
driftregion wants to merge 1 commit into
cppcheck-opensource:mainfrom
driftregion:main
Open

driftregion wants to merge 1 commit into
cppcheck-opensource:mainfrom
driftregion:main

Conversation

@driftregion

Copy link
Copy Markdown

Hello. Thank you for maintaining cppcheck.

While testing my library with the misra.py addon, I found that it gave false positives when the closing brace of an initializer list was mistaken for the closing brace of a function. This PR adds a failing test case and the code to make it pass.

Comment thread addons/misra.py
Comment on lines +1179 to 1180
if functionEnd is None and tok.str == '}' and tok.scope and tok.scope.type == 'Function':
break

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an AI review. Take it with a grain of salt and feel free to reject it by resolving the comment.

The fix looks correct to me. I ran the CI commands (cppcheck --dump -DDUMMY ... misra/misra-test.c --std=c89 --platform=unix64 + misra.py -verify): with the old misra.py the new test gives Not expected: misra/misra-test.c:1476 15.2, and with this PR it passes. This was the only place in misra.py that used the '}' + scope.type == 'Function' heuristic.

Optional: a goto is always inside a function, so functionScope should never be None here. The fallback keeps the old heuristic that caused this bug. Maybe drop it and just stop at functionEnd, to keep the function simpler.

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.

2 participants