`A4-7-1`: Guard using "." operator getting ignored
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 45/100
Research direction
Start by locating the A4-7-1 implementation that emits cpp/autosar/integer-expression-lead-to-data-loss, then reproduce the false_positive and true_negative examples. Trace how the guard is recognized for a member accessed with the "." operator. Done means the guarded decrement in false_positive no longer warns while the existing true_negative behavior remains compliant.
Written by the indexing model from the issue text.
Description
Affected rules
- A4-7-1
Description
Changing a class/struct's member value with an arithmetic expression triggers a A4-7-1 warning, despite using an appropriate type guard (example function false_positive).
I have to workaround it by destructuring my member (example function true_negative).
It seems that the "." operator is badly supported.
Triggered warning is cpp/autosar/integer-expression-lead-to-data-loss.
Example
struct A {
std::int32_t s32;
}
void false_positive(A a) {
if (a.s32 > std::numeric_limits<std::int32_t>::min()) {
// Is supposed to be compliant with A4-7-1, but CodeQL reports a warning
--a.s32;
}
}
void true_negative(A a) {
auto s32 = a.s32;
if (s32 > std::numeric_limits<std::int32_t>::min()) {
// Compliant with A4-7-1
--s32;
}
a.s32 = s32;
}
- Dominant language
- CodeQL
- Stars
- 227
- Forks
- 82
- Avg merge
- 6d 7h
- Merged PRs (30d)
- 9
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from github/codeql-coding-standards
-
false positive/false negative Stardard-MISRA-C++
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
github/codeql-coding-standards#1172 ·
-
Difficulty-Low false positive/false negative false-negative Impact-Low Standard-MISRA-C
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty-Medium false positive/false negative false-positive Impact-Medium Standard-CERT-C
Difficulty 4/5 3-5 days Newbie friendliness 48/100
github/codeql-coding-standards#1200 ·
-
`RULE-0-0-1`: "unreachable statement" false positives due to over-pruning of the control-flow graph Openfalse positive/false negative
Difficulty 4/5 3-5 days Newbie friendliness 48/100
github/codeql-coding-standards#1190 ·
-
false positive/false negative
Difficulty 3/5 1-2 days Newbie friendliness 65/100
github/codeql-coding-standards#1175 ·
All issues in github/codeql-coding-standards
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ScoopInstaller/Nonportable#639 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
ScoopInstaller/Extras#18800 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
uqbar-project/website-wollok-ts#84 · 2 comments ·
-
on hold T: core-bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100