Module: Steep
- Defined in:
- lib/steep.rb,
lib/steep/cli.rb,
lib/steep/source.rb,
lib/steep/typing.rb,
lib/steep/project.rb,
lib/steep/version.rb,
lib/steep/equatable.rb,
lib/steep/rake_task.rb,
lib/steep/ast/ignore.rb,
lib/steep/ast/builtin.rb,
lib/steep/method_name.rb,
lib/steep/node_helper.rb,
lib/steep/path_helper.rb,
lib/steep/project/dsl.rb,
lib/steep/drivers/init.rb,
lib/steep/expectations.rb,
lib/steep/ast/types/any.rb,
lib/steep/ast/types/bot.rb,
lib/steep/ast/types/nil.rb,
lib/steep/ast/types/top.rb,
lib/steep/ast/types/var.rb,
lib/steep/drivers/check.rb,
lib/steep/drivers/stats.rb,
lib/steep/drivers/watch.rb,
lib/steep/located_value.rb,
lib/steep/module_helper.rb,
lib/steep/project/group.rb,
lib/steep/server/master.rb,
lib/steep/thread_waiter.rb,
lib/steep/ast/annotation.rb,
lib/steep/ast/types/name.rb,
lib/steep/ast/types/proc.rb,
lib/steep/ast/types/self.rb,
lib/steep/ast/types/void.rb,
lib/steep/drivers/vendor.rb,
lib/steep/drivers/worker.rb,
lib/steep/project/target.rb,
lib/steep/ast/types/class.rb,
lib/steep/ast/types/logic.rb,
lib/steep/ast/types/tuple.rb,
lib/steep/ast/types/union.rb,
lib/steep/diagnostic/ruby.rb,
lib/steep/index/rbs_index.rb,
lib/steep/interface/block.rb,
lib/steep/interface/shape.rb,
lib/steep/project/options.rb,
lib/steep/project/pattern.rb,
lib/steep/subtyping/cache.rb,
lib/steep/subtyping/check.rb,
lib/steep/ast/types/helper.rb,
lib/steep/ast/types/record.rb,
lib/steep/subtyping/result.rb,
lib/steep/annotation_parser.rb,
lib/steep/ast/types/boolean.rb,
lib/steep/ast/types/factory.rb,
lib/steep/ast/types/literal.rb,
lib/steep/diagnostic/helper.rb,
lib/steep/drivers/checkfile.rb,
lib/steep/interface/builder.rb,
lib/steep/type_construction.rb,
lib/steep/ast/types/instance.rb,
lib/steep/drivers/langserver.rb,
lib/steep/index/source_index.rb,
lib/steep/interface/function.rb,
lib/steep/server/base_worker.rb,
lib/steep/server/delay_queue.rb,
lib/steep/subtyping/relation.rb,
lib/steep/drivers/annotations.rb,
lib/steep/signature/validator.rb,
lib/steep/diagnostic/signature.rb,
lib/steep/interface/type_param.rb,
lib/steep/server/change_buffer.rb,
lib/steep/server/lsp_formatter.rb,
lib/steep/services/file_loader.rb,
lib/steep/source/ignore_ranges.rb,
lib/steep/drivers/print_project.rb,
lib/steep/interface/method_type.rb,
lib/steep/server/custom_methods.rb,
lib/steep/server/worker_process.rb,
lib/steep/services/goto_service.rb,
lib/steep/subtyping/constraints.rb,
lib/steep/ast/types/intersection.rb,
lib/steep/interface/substitution.rb,
lib/steep/type_inference/context.rb,
lib/steep/ast/node/type_assertion.rb,
lib/steep/services/content_change.rb,
lib/steep/type_inference/type_env.rb,
lib/steep/diagnostic/lsp_formatter.rb,
lib/steep/server/type_check_worker.rb,
lib/steep/services/path_assignment.rb,
lib/steep/type_inference/case_when.rb,
lib/steep/type_inference/send_args.rb,
lib/steep/ast/annotation/collection.rb,
lib/steep/ast/node/type_application.rb,
lib/steep/ast/types/shared_instance.rb,
lib/steep/drivers/utils/jobs_option.rb,
lib/steep/server/interaction_worker.rb,
lib/steep/server/target_group_files.rb,
lib/steep/server/work_done_progress.rb,
lib/steep/services/stats_calculator.rb,
lib/steep/diagnostic/result_printer2.rb,
lib/steep/drivers/diagnostic_printer.rb,
lib/steep/services/signature_service.rb,
lib/steep/type_inference/method_call.rb,
lib/steep/drivers/utils/driver_helper.rb,
lib/steep/services/hover_provider/rbs.rb,
lib/steep/services/type_check_service.rb,
lib/steep/subtyping/variable_variance.rb,
lib/steep/type_inference/block_params.rb,
lib/steep/type_inference/constant_env.rb,
lib/steep/server/type_check_controller.rb,
lib/steep/services/completion_provider.rb,
lib/steep/services/hover_provider/ruby.rb,
lib/steep/type_inference/method_params.rb,
lib/steep/services/type_name_completion.rb,
lib/steep/index/signature_symbol_provider.rb,
lib/steep/type_inference/type_env_builder.rb,
lib/steep/services/signature_help_provider.rb,
lib/steep/type_inference/multiple_assignment.rb,
lib/steep/type_inference/logic_type_interpreter.rb,
lib/steep/services/hover_provider/singleton_methods.rb,
lib/steep/diagnostic/deprecated/else_on_exhaustive_case.rb,
lib/steep/diagnostic/deprecated/unknown_constant_assigned.rb
Defined Under Namespace
Modules: AST, Diagnostic, Drivers, Equatable, Index, Interface, ModuleHelper, NodeHelper, PathHelper, Server, Services, Signature, Subtyping, TypeInference
Classes: AnnotationParser, CLI, Expectations, LocatedValue, Project, RakeTask, Sampler, Source, ThreadWaiter, TypeConstruction, Typing
Constant Summary
collapse
- VERSION =
"1.9.4"
- InstanceMethodName =
_ = Struct.new(:type_name, :method_name, keyword_init: true) do
def to_s
"#{type_name}##{method_name}"
end
def relative
InstanceMethodName.new(type_name: type_name.relative!, method_name: method_name)
end
end
- SingletonMethodName =
_ = Struct.new(:type_name, :method_name, keyword_init: true) do
def to_s
"#{type_name}.#{method_name}"
end
def relative
SingletonMethodName.new(type_name: type_name.relative!, method_name: method_name)
end
end
Class Method Summary
collapse
Class Method Details
.log_error(exn, message: "Unexpected error: #{exn.inspect}") ⇒ Object
220
221
222
223
224
225
226
227
|
# File 'lib/steep.rb', line 220
def self.log_error(exn, message: "Unexpected error: #{exn.inspect}")
Steep.logger.fatal message
if backtrace = exn.backtrace
backtrace.each do |loc|
Steep.logger.error " #{loc}"
end
end
end
|
.log_output ⇒ Object
185
186
187
|
# File 'lib/steep.rb', line 185
def self.log_output
@log_output
end
|
.log_output=(output) ⇒ Object
189
190
191
192
193
194
195
196
197
198
199
|
# File 'lib/steep.rb', line 189
def self.log_output=(output)
@log_output = output
prev_level = @logger&.level
@logger = new_logger(output, prev_level)
prev_level = @ui_logger&.level
@ui_logger = new_logger(output, prev_level)
output
end
|
161
162
163
|
# File 'lib/steep.rb', line 161
def self.logger
@logger || raise
end
|
.measure(message, level: :warn, threshold: 0.0) ⇒ Object
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
# File 'lib/steep.rb', line 205
def self.measure(message, level: :warn, threshold: 0.0)
start = Time.now
begin
yield
ensure
time = Time.now - start
if level.is_a?(Symbol)
level = Logger.const_get(level.to_s.upcase)
end
if time > threshold
self.logger.log(level) { "#{message} took #{time} seconds" }
end
end
end
|
.measure2(message, level: :warn) ⇒ Object
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
|
# File 'lib/steep.rb', line 270
def self.measure2(message, level: :warn)
sampler = Sampler.new
result = yield(sampler)
if level.is_a?(Symbol)
level = Logger.const_get(level.to_s.upcase)
end
logger.log(level) { "#{sampler.total}secs for \"#{message}\"" }
logger.log(level) { " Average: #{sampler.average}secs"}
logger.log(level) { " Median: #{sampler.percentile(50)}secs"}
logger.log(level) { " Samples: #{sampler.count}"}
logger.log(level) { " 99 percentile: #{sampler.percentile(99)}secs"}
logger.log(level) { " 90 percentile: #{sampler.percentile(90)}secs"}
logger.log(level) { " 10 Slowests:"}
sampler.slowests(10).each do |message, time|
logger.log(level) { " #{message} (#{time}secs)"}
end
result
end
|
.new_logger(output, prev_level) ⇒ Object
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
# File 'lib/steep.rb', line 169
def self.new_logger(output, prev_level)
logger = Logger.new(output)
logger.formatter = proc do |severity, datetime, progname, msg|
"#{datetime.strftime('%Y-%m-%d %H:%M:%S.%L')}: #{severity}: #{msg}\n"
end
ActiveSupport::TaggedLogging.new(logger).tap do |logger|
logger.push_tags "Steep #{VERSION}"
logger.level = prev_level || Logger::ERROR
end
end
|
.ui_logger ⇒ Object
165
166
167
|
# File 'lib/steep.rb', line 165
def self.ui_logger
@ui_logger || raise
end
|