Last active
January 22, 2020 10:49
-
-
Save jiparis/53db0b6322d0f3780534de4e03629b1f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Taken from https://github.com/lsegal/yard-examples/blob/master/override/override.rb | |
require 'yard' | |
# Register the tag to be recognized by the parser | |
YARD::Tags::Library.define_tag 'Overriden Method', :override | |
# Parse the ruby file | |
YARD.parse('example_code.rb') | |
# Check that all declared overriden methods define @override | |
# and that all @override tags override something. | |
YARD::Registry.all(:method).each do |method| | |
found_override = false | |
method.namespace.inheritance_tree[1..-1].each do |klass| | |
if found_override = klass.child(name: method.name, scope: method.scope) | |
break | |
end | |
end | |
warning = nil | |
if found_override && !method.has_tag?(:override) | |
warning = "does not declare override for superclass method" | |
elsif !found_override && method.has_tag?(:override) | |
warning = "declares override but does not override any methods (typo?)." | |
end | |
puts "[warning] '#{method.path}' #{warning}" if warning | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment