Currently CodeQLResult and SemgrepResult shares a lot of common code due to both of them being based on SARIF files. The only difference being how locations are treated. We should refactor them to single parameterized class that handles generic SARIF files.