@@ -60,11 +60,9 @@ public class OpenApiAnalyzer {
6060 private final SensorContext context ;
6161 private final List <InputFile > inputFiles ;
6262 private final OpenApiChecks checks ;
63- private final YamlParser v2parser ;
64- private final YamlParser v3parser ;
65- private final YamlParser genericParser ;
6663 private final NoSonarFilter noSonarFilter ;
6764 private final OpenApiCpdAnalyzer cpdAnalyzer ;
65+ private final OpenApiConfiguration configuration ;
6866 private FileLinesContextFactory fileLinesContextFactory ;
6967
7068 public OpenApiAnalyzer (SensorContext context , OpenApiChecks checks , FileLinesContextFactory fileLinesContextFactory , NoSonarFilter noSonarFilter , List <InputFile > inputFiles /*, boolean isv2*/ ) {
@@ -74,10 +72,7 @@ public OpenApiAnalyzer(SensorContext context, OpenApiChecks checks, FileLinesCon
7472 this .noSonarFilter = noSonarFilter ;
7573 this .cpdAnalyzer = new OpenApiCpdAnalyzer (context );
7674 this .inputFiles = inputFiles ;
77- OpenApiConfiguration configuration = new OpenApiConfiguration (context .fileSystem ().encoding (), true );
78- this .v2parser = OpenApiParser .createV2 (configuration );
79- this .v3parser = OpenApiParser .createV3 (configuration );
80- this .genericParser = OpenApiParser .createGeneric (configuration );
75+ this .configuration = new OpenApiConfiguration (context .fileSystem ().encoding (), true );
8176 }
8277
8378 private static NewIssueLocation newLocation (InputFile inputFile , NewIssue issue , IssueLocation location ) {
@@ -122,12 +117,12 @@ private void scanFile(InputFile inputFile) {
122117 try {
123118 String content = getContent (inputFile );
124119 if (!content .contains ("swagger" ) && !content .contains ("openapi" )) return ;
125- JsonNode rootNode = genericParser .parse (content );
120+ JsonNode rootNode = OpenApiParser . createGeneric ( configuration ) .parse (content );
126121 boolean isV2 = !rootNode .at ("/swagger" ).isMissing ();
127122 boolean isV3 = !rootNode .at ("/openapi" ).isMissing ();
128123 YamlParser targetParser = null ;
129- if (isV2 ) targetParser = v2parser ;
130- if (isV3 ) targetParser = v3parser ;
124+ if (isV2 ) targetParser = OpenApiParser . createV2 ( configuration ) ;
125+ if (isV3 ) targetParser = OpenApiParser . createV3 ( configuration ) ;
131126 if (targetParser == null ) return ;
132127
133128 visitorContext = new OpenApiVisitorContext (targetParser .parse (content ), targetParser .getIssues (), openApiFile );
@@ -138,12 +133,10 @@ private void scanFile(InputFile inputFile) {
138133 for (ValidationException cause : e .getCauses ()) {
139134 dumpException (cause , inputFile );
140135 }
141-
142136 } catch (RecognitionException e ) {
143137 visitorContext = new OpenApiVisitorContext (openApiFile , e );
144138 LOG .error ("Unable to parse file in recognition: " + inputFile .filename () + "\" \n " + e .getMessage ());
145139 dumpException (e , inputFile );
146-
147140 } catch (IOException ex ) {
148141 RecognitionException re = new RecognitionException (0 , ex .getMessage ());
149142 visitorContext = new OpenApiVisitorContext (openApiFile , re );
0 commit comments