[question?] counterintuitive class method behaviour
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 38/100
- Tipo de issue
- Documentação
- Clareza
- Razoavelmente clara
- Status de atividade
- Pouca atividade
- Domínio
- documentation
Direção de pesquisa
Comece pela consulta e pela saída do CodeQL mostradas na issue e, em seguida, leia a documentação que aborda métodos de classe e avaliação de predicados. Confirme o comportamento pretendido e identifique a seção relevante da documentação; considera-se concluído quando o comportamento estiver explicado com clareza suficiente para abordar a lacuna relatada no modelo mental.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
When I write a query like this:
class Meow extends Struct {
Field f;
Meow() {
f.getDeclaringType() = this
}
Field getField() { result = f }
}
from Meow m
select m, m.getField(), m.getField()
My mental model of this is: "Meow is essentially a (struct, struct's field) tuple. from Meow m will select all of those tuples. For each of those , select m, m.getField(), m.getField() will print their contents."
But that is actually not what happens, because you get results like this:
| m | col1 | col2 |
+-----------------------------------+-----------------------------------------------------+-----------------------------------------------------+
// [snip]
| port_io_ops | f_inb | f_outb |
// [snip]
Which means that the first m.getField() and the second m.getField() are operating on different Meow objects.
I've been debugging a bug in my query for hours now only to realize that this is what happens. Is this really intended? I read through a non-trivial amount of documentation and did not realize this, I feel like my whole mental model of how codeql works is shattering :S
(If it is really intended, could the documentation be updated to point this out more clearly?)
- Linguagem predominante
- CodeQL
- Estrelas
- 10.1k
- Forks
- 2.1k
- Merge médio
- 2d 10h
- PRs com merge (30d)
- 134
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
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
-
C#: cs/simplifiable-boolean-expression false positive on Nullable<bool> compared with a literal Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
false-positive
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
false-positive
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
Todas as issues de github/codeql
Issues semelhantes
-
Add: hunch Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
AbdelStark/awesome-typesafe#104 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
-
A11y ♿️
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Link Checker Report Abertaautomated issue report
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
-
documentation improve or update documentation priority/low triage
Dificuldade 2/5 Meio dia Facilidade para iniciantes 86/100
warpdotdev/docs#782 · 1 comentário ·