The kinds of analyses mentioned here are typically grouped under "linting"–more advanced static analysis tools will typically do things like dataflow analysis.
Terms which you might find useful to search for are "dataflow analysis", "abstract interpretation", and "taint checking". A basic background in compiler optimization would generally be helpful.
Don't have any materials to point to, sadly. Most of the knowledge in this field is locked up in papers and tools; I was lucky to learn most of what I know from a graduate class taught by a professor working on static analysis in V8 and working with/on software security tooling. To begin with, I'd suggest first brushing up on compiler optimizations (which is largely separate from parsing) and that should lead you to dataflow analysis techniques.
While computing phis for SSA does require dataflow analysis, SSA itself is not tremendously useful. The natural follow up to this would be "so what?" Something like live variable analysis is probably a much better first introduction to dataflow analysis since its application is much more obvious.
SSA is also not even universal among IRs for static analysis at this point. Heap-SSA is growing in popularity for complex dataflow problems involving fields.