|
60 | 60 | import com.semmle.util.io.csv.CSVReader; |
61 | 61 | import com.semmle.util.language.LegacyLanguage; |
62 | 62 | import com.semmle.util.process.Env; |
| 63 | +import com.semmle.util.process.Env.OS; |
63 | 64 | import com.semmle.util.projectstructure.ProjectLayout; |
64 | 65 | import com.semmle.util.trap.TrapWriter; |
65 | 66 |
|
@@ -1239,11 +1240,29 @@ public Set<String> getXmlExtensions() { |
1239 | 1240 | protected void extractXml() throws IOException { |
1240 | 1241 | if (xmlExtensions.isEmpty()) return; |
1241 | 1242 | List<String> cmd = new ArrayList<>(); |
1242 | | - cmd.add("odasa"); |
1243 | | - cmd.add("index"); |
1244 | | - cmd.add("--xml"); |
1245 | | - cmd.add("--extensions"); |
1246 | | - cmd.addAll(xmlExtensions); |
| 1243 | + if (EnvironmentVariables.getCodeQLDist() == null) { |
| 1244 | + // Use the legacy odasa XML extractor |
| 1245 | + cmd.add("odasa"); |
| 1246 | + cmd.add("index"); |
| 1247 | + cmd.add("--xml"); |
| 1248 | + cmd.add("--extensions"); |
| 1249 | + cmd.addAll(xmlExtensions); |
| 1250 | + } else { |
| 1251 | + String command = Env.getOS() == OS.WINDOWS ? "codeql.exe" : "codeql"; |
| 1252 | + cmd.add(Paths.get(EnvironmentVariables.getCodeQLDist(), command).toString()); |
| 1253 | + cmd.add("database"); |
| 1254 | + cmd.add("index-files"); |
| 1255 | + cmd.add("--language"); |
| 1256 | + cmd.add("xml"); |
| 1257 | + cmd.add("--size-limit"); |
| 1258 | + cmd.add("10m"); |
| 1259 | + for (String extension : xmlExtensions) { |
| 1260 | + cmd.add("--include-extension"); |
| 1261 | + cmd.add(extension); |
| 1262 | + } |
| 1263 | + cmd.add("--"); |
| 1264 | + cmd.add(EnvironmentVariables.getWipDatabase()); |
| 1265 | + } |
1247 | 1266 | ProcessBuilder pb = new ProcessBuilder(cmd); |
1248 | 1267 | try { |
1249 | 1268 | pb.redirectError(Redirect.INHERIT); |
|
0 commit comments