Sha256: a6a2f61ff8a4066e03858a585c04dde481eeca13bd4b959c63403f21c9e2f1f5
Contents?: true
Size: 1.27 KB
Versions: 29
Compression:
Stored size: 1.27 KB
Contents
class GobstonesExpectationsHook < Mumukit::Templates::MulangExpectationsHook include_smells true # no need to implement `language` and `compile_content` # since we are completly overriding `mulang_code` def mulang_code(request) Mulang::Code.external extract_ast(request) end 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 def default_smell_exceptions LOGIC_SMELLS + FUNCTIONAL_SMELLS + OBJECT_ORIENTED_SMELLS end private 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 end
Version data entries
29 entries across 29 versions & 1 rubygems