@@ -28,8 +28,9 @@ class Base
2828
2929 MAJOR_SEVERITY_THRESHOLD = 120 * POINTS_PER_MINUTE
3030
31- def initialize ( engine_config :)
31+ def initialize ( engine_config :, parse_metrics : )
3232 @engine_config = engine_config
33+ @parse_metrics = parse_metrics
3334 end
3435
3536 def run ( file )
@@ -97,7 +98,7 @@ def use_sexp_lines?
9798
9899 private
99100
100- attr_reader :engine_config
101+ attr_reader :engine_config , :parse_metrics
101102
102103 def base_points
103104 self . class ::BASE_POINTS
@@ -131,6 +132,7 @@ def skip?(_path)
131132
132133 def parse ( file , request_path )
133134 processed_source = ProcessedSource . new ( file , request_path )
135+ parse_metrics . incr ( :succeeded )
134136 SexpBuilder . new ( processed_source . ast , file ) . build
135137 rescue => ex
136138 handle_exception ( processed_source , ex )
@@ -144,11 +146,14 @@ def handle_exception(processed_source, ex)
144146 CC . logger . warn ( "Skipping #{ processed_source . path } due to #{ ex . class } " )
145147 CC . logger . warn ( "Response status: #{ ex . response_status } " )
146148 CC . logger . debug { "Response:\n #{ ex . response_body } " }
149+ parse_metrics . incr ( ex . code . to_sym )
147150 when ex . is_a? ( CC ::Parser ::Client ::EncodingError )
148151 CC . logger . warn ( "Skipping #{ processed_source . path } due to #{ ex . class } : #{ ex . message } " )
152+ parse_metrics . incr ( :encoding_error )
149153 when ex . is_a? ( CC ::Parser ::Client ::NestingDepthError )
150154 CC . logger . warn ( "Skipping #{ processed_source . path } due to #{ ex . class } " )
151155 CC . logger . warn ( ex . message )
156+ parse_metrics . incr ( :client_nesting_depth_error )
152157 else
153158 CC . logger . error ( "Error processing file: #{ processed_source . path } " )
154159 CC . logger . error ( ex . message )
0 commit comments