File tree Expand file tree Collapse file tree 2 files changed +38
-5
lines changed
Expand file tree Collapse file tree 2 files changed +38
-5
lines changed 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