-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement final MISRA C 2023 rule amendments #872
base: main
Are you sure you want to change the base?
Implement final MISRA C 2023 rule amendments #872
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements the final amendments for MISRA C 2023 by updating change notes for several CodeQL queries.
- Updated change notes for
DIR-4-9
, clarifying that macros with_Generic
are no longer reported - Updated change notes for
RULE-1-4
, indicating the ban on usage of_Generics
has been removed - Added change notes for new query
RULE-18-6
detecting thread local objects assigned to static storage duration objects, and updated notes forRULE-21-12
to report usage of certain functions in "fenv.h"
Tip: Copilot code review supports C#, Go, Java, JavaScript, Markdown, Python, Ruby and TypeScript, with more languages coming soon. Learn more
threadLocalObj.getStorageDuration().isThread() | ||
) | ||
or | ||
exists(TSSGetFunctionCall getCall | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm fine with opening an issue to track extending this case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Filed #877
…al-misra-c-rule-amendments
Description
This covers all of the remaining rule amendments for MISRA C 2023.
Ideally for 18-6, we eventually support tss_t as an
ObjectIdentity
. However, it's a little tricky because currentlyObjectIdentity
extendsElement
, and atss_t
is already aVariableObjectIdentity
(the tss_t object itself, not the thread storage it points to). So we can't simply overrideObjectIdentity
fortss_t
objects to make a new thread local. Additionally, we could treat eachtss_get()
call as anObjectIdentity
but that diverges from the intention of the class, because thetss_get
call doesn't identify the object, its thetss_t
variable that identifies it.We can open an issue and worry about that later if we wish. For now, we cover
_Thread_local
variables more comprehensively thantss_t
s, which is probably A-OK.Change request type
.ql
,.qll
,.qls
or unit tests)Rules with added or modified queries
RULE-18-6
- new rule to handle new case (thread locals assigned to static storage duration objects)DIR-4-9
RULE-1-4
,RULE-21-12
Release change checklist
A change note (development_handbook.md#change-notes) is required for any pull request which modifies:
If you are only adding new rule queries, a change note is not required.
Author: Is a change note required?
🚨🚨🚨
Reviewer: Confirm that format of shared queries (not the .qll file, the
.ql file that imports it) is valid by running them within VS Code.
Reviewer: Confirm that either a change note is not required or the change note is required and has been added.
Query development review checklist
For PRs that add new queries or modify existing queries, the following checklist should be completed by both the author and reviewer:
Author
As a rule of thumb, predicates specific to the query should take no more than 1 minute, and for simple queries be under 10 seconds. If this is not the case, this should be highlighted and agreed in the code review process.
Reviewer
As a rule of thumb, predicates specific to the query should take no more than 1 minute, and for simple queries be under 10 seconds. If this is not the case, this should be highlighted and agreed in the code review process.