Does analysis identify dependencies to virtual functions?
Analysis catches function references just to the base classes, not to the implemented dynamic, which comes from nature of static analysis.
Does analysis recognize function pointers and to where function calls target when called through a pointer?
Analysis recognizes the function reference (the name of the function) where used, but does not analyze the usage of pointers and this way is not able to detect what are the actual function call targets.
How the analysis is able to correctly resolve included headers and real code instead of some dead files that are not compiled at all?
Build output usually contains compiler commands. Each compiler command such as gcc foo.cpp contain information about compile units (foo.cpp) and may also contain information about preprocessor defines and include directories. Those pieces of information are collected and fed into the analyzer that does preprocessing to improve reliability of the analysis. You may let Softagram run your build tool if there are no hard dependencies, so that the build output can be generated on-fly as part of the analysis process, or you may provide e.g. Jenkins or AzureDevOps based build output storage for Softagram usage.
What if build log cannot be produced on Softagram server and I there is no automated builds for pull requests?
Well, you should have automated builds for pull requests.