`DCL53-CPP`: Reports non syntactically ambiguous object declarations
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 45/100
Direção de pesquisa
Comece com LocalConstructorInitializedObjectHidesIdentifier.ql e seu caso de teste existente; em seguida, compare os resultados da consulta para os exemplos S1(g1), S1 g2(), S1 g3, S1 g4{}, S1 g5(1) e S1 g6{1}. O trabalho estará concluído quando a consulta DCL53-CPP relatar as declarações não conformes sem os falsos positivos listados, ou quando a limitação de análise restante for documentada.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Affected rules
DCL53-CPP
Description
LocalConstructorInitializedObjectHidesIdentifier.ql currently identifies variable declarations that call a constructor and hide an outer scope variable. However, this does not fully capture the cases covered by this vexing parsing situation, which is looking for S1(g1).
The following additions to the query could help address this problem:
v.getInitializer().getExpr().(ConstructorCall).getNumberOfArguments() = 0 and
not v.getInitializer().isBraced()
However this would still flag S1 g3; below - as we don't currently have a record of where the brackets were during parsing.
Example
This modification of the test case highlights the problems:
int g1 = 0;
int g2 = 0;
int g3 = 0;
int g4 = 0;
int g5 = 0;
int g6 = 0;
void f1() {
S1(g1); // NON_COMPLIANT
S1 g2(); // NON_COMPLIANT
S1 g3; // COMPLIANT[FALSE_POSITIVE]
S1 g4{}; // COMPLIANT[FALSE_POSITIVE]
S1 g5(1); // COMPLIANT[FALSE_POSITIVE]
S1 g6{1}; // COMPLIANT[FALSE_POSITIVE]
}
- Linguagem predominante
- CodeQL
- Estrelas
- 227
- Forks
- 82
- Merge médio
- 6d 7h
- PRs com merge (30d)
- 9
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de github/codeql-coding-standards
-
false positive/false negative Stardard-MISRA-C++
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
github/codeql-coding-standards#1172 ·
-
Difficulty-Low false positive/false negative false-negative Impact-Low Standard-MISRA-C
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
Difficulty-Medium false positive/false negative false-positive Impact-Medium Standard-CERT-C
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
github/codeql-coding-standards#1200 ·
-
`RULE-0-0-1`: "unreachable statement" false positives due to over-pruning of the control-flow graph Abertafalse positive/false negative
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
github/codeql-coding-standards#1190 ·
-
false positive/false negative
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 65/100
github/codeql-coding-standards#1175 ·
Todas as issues de github/codeql-coding-standards
Issues semelhantes
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
stephrobert/dsoxlab#238 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
sublimehq/package_control#1780 ·
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
typelevel/sbt-typelevel#929 ·
-
Update HugeIcons library Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
antfu-collective/icones#398 ·