-
Notifications
You must be signed in to change notification settings - Fork 67
A7-3-1
: Improve performance, reduce false positives
#365
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
Conversation
Refactor to: 1. Avoid any potential performance problems from equating names of two member functions. 2. Report the Declaration, not the DeclarationEntry of the hidden function, which reduces duplication.
The filter on order between overriding declaration and using was problematic because: 1. It produced a bad join order related to start lines. 2. It did not check if they were in the same file. 3. It used the wrong declaration - the order of the overriding declaration and the using declaration doesn't matter. I think the intention was to confirm that the hidden declaration appeared before the using declaration (so that it was in scope), but errors of this kind would be identified by the DefinitionNotConsideredForUnqualifiedLookup.ql query, so there's no need to factor that in here.
There is no need to report every declaration entry. This commit also fixes performance issues that occurred when making this change.
Special member functions are not inheritable.
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.
Do we want to apply the same optimization for cpp/autosar/src/rules/A7-3-1/HiddenInheritedOverridableMemberFunction.ql?
Co-authored-by: Remco Vermeulen <rvermeulen@users.noreply.github.com>
Similar change to NonOverridable case.
I updated |
cpp/autosar/src/rules/A7-3-1/HiddenInheritedNonOverridableMemberFunction.ql
Show resolved
Hide resolved
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.
A suggestion to remove results that cannot be acted upon by developers.
Private member functions can't be inherited.
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.
We keep contraventions in macro expansions and rely on deviations to exclude those that are caused by patterns outside of the control of the developer (e.g., Qt framework)
Description
Fixes #359 and #360.
This pull request addresses a number of issues with
HiddenInheritedNonOverridableMemberFunction.ql
:using
declarations and function declarations in a class. We previously required the using declaration to appear first, but order does not matter.Function
s notFunctionDeclarationEntry
s in both the hiding and hidden declarations.Change request type
.ql
,.qll
,.qls
or unit tests)Rules with added or modified queries
A7-3-1
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.