@@ -173,7 +173,6 @@ public class AutoBuild {
173173 private final Path LGTM_SRC , SEMMLE_DIST ;
174174 private final TypeScriptMode typeScriptMode ;
175175 private final String defaultEncoding ;
176- private ExtractorState extractorState ;
177176
178177 public AutoBuild () {
179178 this .LGTM_SRC = toRealPath (getPathFromEnvVar ("LGTM_SRC" ));
@@ -182,7 +181,6 @@ public AutoBuild() {
182181 this .trapCache = mkTrapCache ();
183182 this .typeScriptMode = getEnumFromEnvVar ("LGTM_INDEX_TYPESCRIPT" , TypeScriptMode .class , TypeScriptMode .BASIC );
184183 this .defaultEncoding = getEnvVar ("LGTM_INDEX_DEFAULT_ENCODING" );
185- this .extractorState = new ExtractorState ();
186184 setupMatchers ();
187185 }
188186
@@ -413,12 +411,12 @@ public File lookup(String source, ExtractorConfig config, FileType type) {
413411 }
414412 }
415413
416- FileExtractor extractor = new FileExtractor (config , outputConfig , trapCache , extractorState );
414+ FileExtractor extractor = new FileExtractor (config , outputConfig , trapCache );
417415 FileVisitor <? super Path > visitor = new SimpleFileVisitor <Path >() {
418416 @ Override
419417 public FileVisitResult visitFile (Path file , BasicFileAttributes attrs ) throws IOException {
420418 if (".js" .equals (FileUtil .extension (file .toString ())))
421- extract (extractor , file );
419+ extract (extractor , file , null );
422420 return super .visitFile (file , attrs );
423421 }
424422 };
@@ -435,7 +433,7 @@ private void extractSource() throws IOException {
435433 config = config .withTypeScriptMode (typeScriptMode );
436434 if (defaultEncoding != null )
437435 config = config .withDefaultEncoding (defaultEncoding );
438- FileExtractor extractor = new FileExtractor (config , outputConfig , trapCache , extractorState );
436+ FileExtractor extractor = new FileExtractor (config , outputConfig , trapCache );
439437 Path [] currentRoot = new Path [1 ];
440438 final Set <Path > filesToExtract = new LinkedHashSet <>();
441439 final List <Path > tsconfigFiles = new ArrayList <>();
@@ -482,6 +480,7 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) th
482480 }
483481
484482 // If there are any .ts files, verify that TypeScript is installed.
483+ ExtractorState extractorState = new ExtractorState ();
485484 TypeScriptParser tsParser = extractorState .getTypeScriptParser ();
486485 boolean hasTypeScriptFiles = false ;
487486 for (Path file : filesToExtract ) {
@@ -494,7 +493,7 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) th
494493 }
495494 }
496495 if (hasTypeScriptFiles || !tsconfigFiles .isEmpty ()) {
497- verifyTypeScriptInstallation ();
496+ verifyTypeScriptInstallation (extractorState );
498497 }
499498
500499 // Extract TypeScript projects
@@ -515,7 +514,7 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) th
515514 typeScriptFiles .add (sourcePath .toFile ());
516515 }
517516 }
518- extractTypeScriptFiles (typeScriptFiles , extractedFiles , extractor );
517+ extractTypeScriptFiles (typeScriptFiles , extractedFiles , extractor , extractorState );
519518 tsParser .closeProject (projectFile );
520519 }
521520
@@ -533,7 +532,7 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) th
533532 }
534533 }
535534 if (!remainingTypeScriptFiles .isEmpty ()) {
536- extractTypeScriptFiles (remainingTypeScriptFiles , extractedFiles , extractor );
535+ extractTypeScriptFiles (remainingTypeScriptFiles , extractedFiles , extractor , extractorState );
537536 }
538537
539538 // The TypeScript compiler instance is no longer needed.
@@ -542,7 +541,7 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) th
542541 // Extract non-TypeScript files
543542 for (Path f : filesToExtract ) {
544543 if (extractedFiles .add (f )) {
545- extract (extractor , f );
544+ extract (extractor , f , null );
546545 }
547546 }
548547 }
@@ -551,16 +550,17 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) th
551550 * Verifies that Node.js and the TypeScript compiler are installed and can be
552551 * found.
553552 */
554- public void verifyTypeScriptInstallation () {
553+ public void verifyTypeScriptInstallation (ExtractorState extractorState ) {
555554 extractorState .getTypeScriptParser ().verifyInstallation (true );
556555 }
557556
558- public void extractTypeScriptFiles (List <File > files , Set <Path > extractedFiles , FileExtractor extractor ) throws IOException {
557+ public void extractTypeScriptFiles (List <File > files , Set <Path > extractedFiles ,
558+ FileExtractor extractor , ExtractorState extractorState ) throws IOException {
559559 extractorState .getTypeScriptParser ().prepareFiles (files );
560560 for (File f : files ) {
561561 Path path = f .toPath ();
562562 extractedFiles .add (path );
563- extract (extractor , f .toPath ());
563+ extract (extractor , f .toPath (), extractorState );
564564 }
565565 }
566566
@@ -597,15 +597,15 @@ private SourceType getSourceType() {
597597 /**
598598 * Extract a single file.
599599 */
600- protected void extract (FileExtractor extractor , Path file ) throws IOException {
600+ protected void extract (FileExtractor extractor , Path file , ExtractorState state ) throws IOException {
601601 File f = file .toFile ();
602602 if (!f .exists ()) {
603603 warn ("Skipping " + file + ", which does not exist." );
604604 return ;
605605 }
606606
607607 long start = logBeginProcess ("Extracting " + file );
608- extractor .extract (f );
608+ extractor .extract (f , state );
609609 logEndProcess (start );
610610 }
611611
0 commit comments