11package com .semmle .js .extractor ;
22
3- import com .semmle .js .extractor .ExtractorConfig .SourceType ;
4- import com .semmle .js .extractor .FileExtractor .FileType ;
5- import com .semmle .js .extractor .trapcache .DefaultTrapCache ;
6- import com .semmle .js .extractor .trapcache .DummyTrapCache ;
7- import com .semmle .js .extractor .trapcache .ITrapCache ;
8- import com .semmle .js .parser .ParsedProject ;
9- import com .semmle .js .parser .TypeScriptParser ;
10- import com .semmle .ts .extractor .TypeExtractor ;
11- import com .semmle .ts .extractor .TypeTable ;
12- import com .semmle .util .data .StringUtil ;
13- import com .semmle .util .exception .CatastrophicError ;
14- import com .semmle .util .exception .Exceptions ;
15- import com .semmle .util .exception .ResourceError ;
16- import com .semmle .util .exception .UserError ;
17- import com .semmle .util .extraction .ExtractorOutputConfig ;
18- import com .semmle .util .files .FileUtil ;
19- import com .semmle .util .io .csv .CSVReader ;
20- import com .semmle .util .language .LegacyLanguage ;
21- import com .semmle .util .process .Env ;
22- import com .semmle .util .projectstructure .ProjectLayout ;
23- import com .semmle .util .trap .TrapWriter ;
243import java .io .File ;
254import java .io .IOException ;
265import java .io .Reader ;
4827import java .util .concurrent .TimeUnit ;
4928import java .util .stream .Stream ;
5029
30+ import com .semmle .js .extractor .ExtractorConfig .SourceType ;
31+ import com .semmle .js .extractor .FileExtractor .FileType ;
32+ import com .semmle .js .extractor .trapcache .DefaultTrapCache ;
33+ import com .semmle .js .extractor .trapcache .DummyTrapCache ;
34+ import com .semmle .js .extractor .trapcache .ITrapCache ;
35+ import com .semmle .js .parser .ParsedProject ;
36+ import com .semmle .js .parser .TypeScriptParser ;
37+ import com .semmle .ts .extractor .TypeExtractor ;
38+ import com .semmle .ts .extractor .TypeTable ;
39+ import com .semmle .util .data .StringUtil ;
40+ import com .semmle .util .exception .CatastrophicError ;
41+ import com .semmle .util .exception .Exceptions ;
42+ import com .semmle .util .exception .ResourceError ;
43+ import com .semmle .util .exception .UserError ;
44+ import com .semmle .util .extraction .ExtractorOutputConfig ;
45+ import com .semmle .util .files .FileUtil ;
46+ import com .semmle .util .io .csv .CSVReader ;
47+ import com .semmle .util .language .LegacyLanguage ;
48+ import com .semmle .util .process .Env ;
49+ import com .semmle .util .projectstructure .ProjectLayout ;
50+ import com .semmle .util .trap .TrapWriter ;
51+
5152/**
5253 * An alternative entry point to the JavaScript extractor.
5354 *
@@ -194,6 +195,7 @@ public class AutoBuild {
194195 private final TypeScriptMode typeScriptMode ;
195196 private final String defaultEncoding ;
196197 private ExecutorService threadPool ;
198+ private volatile boolean seenCode = false ;
197199
198200 public AutoBuild () {
199201 this .LGTM_SRC = toRealPath (getPathFromEnvVar ("LGTM_SRC" ));
@@ -425,7 +427,7 @@ private boolean addPathPattern(Set<Path> patterns, Path base, String pattern) {
425427 }
426428
427429 /** Perform extraction. */
428- public void run () throws IOException {
430+ public int run () throws IOException {
429431 startThreadPool ();
430432 try {
431433 extractSource ();
@@ -434,6 +436,11 @@ public void run() throws IOException {
434436 } finally {
435437 shutdownThreadPool ();
436438 }
439+ if (!seenCode ) {
440+ warn ("No JavaScript or TypeScript code found." );
441+ return -1 ;
442+ }
443+ return 0 ;
437444 }
438445
439446 private void startThreadPool () {
@@ -736,7 +743,9 @@ private void doExtract(FileExtractor extractor, Path file, ExtractorState state)
736743
737744 try {
738745 long start = logBeginProcess ("Extracting " + file );
739- extractor .extract (f , state );
746+ Integer loc = extractor .extract (f , state );
747+ if (!extractor .getConfig ().isExterns () && (loc == null || loc != 0 ))
748+ seenCode = true ;
740749 logEndProcess (start , "Done extracting " + file );
741750 } catch (Throwable t ) {
742751 System .err .println ("Exception while extracting " + file + "." );
@@ -787,7 +796,7 @@ protected void extractXml() throws IOException {
787796
788797 public static void main (String [] args ) {
789798 try {
790- new AutoBuild ().run ();
799+ System . exit ( new AutoBuild ().run () );
791800 } catch (IOException | UserError | CatastrophicError e ) {
792801 System .err .println (e .toString ());
793802 System .exit (1 );
0 commit comments