File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 6060import com .semmle .util .io .csv .CSVReader ;
6161import com .semmle .util .language .LegacyLanguage ;
6262import com .semmle .util .process .Env ;
63+ import com .semmle .util .process .Env .OS ;
6364import com .semmle .util .projectstructure .ProjectLayout ;
6465import com .semmle .util .trap .TrapWriter ;
6566
@@ -1239,11 +1240,29 @@ public Set<String> getXmlExtensions() {
12391240 protected void extractXml () throws IOException {
12401241 if (xmlExtensions .isEmpty ()) return ;
12411242 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.cmd" : "codeql" ;
1252+ cmd .add (EnvironmentVariables .getCodeQLDist () + "/" + command );
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+ }
12471266 ProcessBuilder pb = new ProcessBuilder (cmd );
12481267 try {
12491268 pb .redirectError (Redirect .INHERIT );
Original file line number Diff line number Diff line change @@ -14,6 +14,11 @@ public class EnvironmentVariables {
1414 public static final String LGTM_WORKSPACE_ENV_VAR =
1515 "LGTM_WORKSPACE" ;
1616
17+ public static final String CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE_ENV_VAR =
18+ "CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE" ;
19+
20+ public static final String CODEQL_DIST_ENV_VAR = "CODEQL_DIST" ;
21+
1722 /**
1823 * Gets the extractor root based on the <code>CODEQL_EXTRACTOR_JAVASCRIPT_ROOT</code> or <code>
1924 * SEMMLE_DIST</code> or environment variable, or <code>null</code> if neither is set.
@@ -49,4 +54,13 @@ public static String getScratchDir() {
4954
5055 throw new UserError (CODEQL_EXTRACTOR_JAVASCRIPT_SCRATCH_DIR_ENV_VAR + " or " + LGTM_WORKSPACE_ENV_VAR + " must be set" );
5156 }
57+
58+ public static String getCodeQLDist () {
59+ return Env .systemEnv ().getNonEmpty (CODEQL_DIST_ENV_VAR );
60+ }
61+
62+ /** Gets the output database directory. */
63+ public static String getWipDatabase () {
64+ return Env .systemEnv ().getNonEmpty (CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE_ENV_VAR );
65+ }
5266}
You can’t perform that action at this time.
0 commit comments