@palo:
Do you have a preferred communication channel?
This is the preferred channel! This thread is read by all mentors.
Could you elaborate more on why this happens in QT’s shared_ptr but not in std’s shared_ptr.
That’s a great question, this could actually be a great exercise if you’re interested =) Theoretically you don’t need either of those to reproduce the issue; the static analyzer isn’t doing anything special for those classes, it simply simulates every statement step by step. It is possible that a combination of factors is necessary to trigger it (eg., not only unimplemented transfer functions, but also poor representation of structured bindings in symbolic memory, triggered by the specific layout of the structure). You can try to walk through that Qt example step by step to see what precisely triggers this specific false positive. Note that you don’t need to install Qt to do this; there’s a “preprocessed” file attached to that ticket that already has all the includes included in it.
One way or another, we’ll hopefully get to the bottom of it by the end of the summer. What I’m trying to say is, all bug reports that we compiler developers receive usually look exactly like this. It is everyday routine work for us to “reduce” them to small easy-to-understand examples.
What I recommend even more is, writing down a few more examples by hand, maybe even without smart pointers, just with pairs of integers. You might want to test the static analyzer more directly via magic debug functions such as clang_analyzer_eval()
(3.1. Debug Checks — Clang 15.0.0git documentation) to see if it’s at all possible to put a value into a structured binding and read it back.
I took a compiler design class at university. Does this count as an experience on your side?
Totally. This probably gives you some ideas of what’s involved in a feature like this. You have a rough idea what’s an AST and what’s a CFG and what are they used for, that’s already a good start!
@cjordan7:
Do you want us to forward you a resume ?
Nope! GSoC is decided through “project proposals” instead (Writing a proposal | Google Summer of Code Guides). Basically you participate in discussions here, then in April you submit a document describing your understanding of the problem and your plan how to solve it, and we choose the student based on the proposal as well as on our interactions so far. You’re encouraged to submit draft proposals here so that mentors could comment on it early. Even though GSoC is competitive, open-source software is highly cooperative, so you can think of your proposal work as a “competition in cooperativeness”. Don’t worry about others “stealing” your ideas, it’s easy for us to keep track of who came up with what.
Do you, folks, have any other resources you would recommend for the project ?
There are some more references at the bottom of Checker Developer Manual.