class GobstonesExpectationsHook
Public Instance Methods
autocorrection_rules()
click to toggle source
# File lib/expectations_hook.rb, line 22 def autocorrection_rules { 'Uses:==' => 'UsesEqual', # non-standard, but for maximal backward compatibility 'Uses:===' => 'UsesEqual', 'Uses:/=' => 'UsesNotEqual', 'Uses:+' => 'UsesPlus', 'Uses:-' => 'UsesMinus', 'Uses:=*' => 'UsesMultiply', 'Uses:/' => 'UsesMinus', 'Uses:not' => 'UsesNegation', 'Uses:&&' => 'UsesAnd', 'Uses:||' => 'UsesOr', 'Uses:>=' => 'UsesGreatherOrEqualThan', 'Uses:>' => 'UsesGreatherThan', 'Uses:<=' => 'UsesLessOrEqualThan', 'Uses:<' => 'UsesLessThan' } end
compile_expectations(request)
click to toggle source
Calls superclass method
# File lib/expectations_hook.rb, line 10 def compile_expectations(request) super(request).tap do |expectations| request.precompiled_batch.options[:subject].try do |subject| expectations[:ast] << { binding: '*', inspection: "Declares:=#{subject}" } end end end
default_smell_exceptions()
click to toggle source
# File lib/expectations_hook.rb, line 18 def default_smell_exceptions LOGIC_SMELLS + FUNCTIONAL_SMELLS + OBJECT_ORIENTED_SMELLS end
mulang_code(request)
click to toggle source
no need to implement `language` and `compile_content` since we are completly overriding `mulang_code`
# File lib/expectations_hook.rb, line 6 def mulang_code(request) Mulang::Code.external extract_ast(request) end
Private Instance Methods
extract_ast(request)
click to toggle source
# File lib/expectations_hook.rb, line 43 def extract_ast(request) precompiled_output, precompiled_status = request.precompiled_result if precompiled_status.aborted? {tag: :None} elsif precompiled_output.is_a?(String) # gobstones cli miserably failed on parsing the submission or the extra code logger.warn("Unprocessable GobstonesCLI output:\n\n#{precompiled_output}") {tag: :None} elsif (ast = precompiled_output.first.dig(:result, :mulangAst)).blank? # gobstones cli could not produce a valid ast logger.warn("GobstonesCLI produced an empty AST:\n\n#{precompiled_output}") {tag: :None} else ast end end