Merge pull request #162 from trailofbits/dev-inheritance

Improve inheritance printers
pull/169/head
Feist Josselin 6 years ago committed by GitHub
commit 87f3be5f14
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 20
      slither/printers/inheritance/inheritance.py
  2. 2
      slither/printers/inheritance/inheritance_graph.py

@ -31,16 +31,26 @@ class PrinterInheritance(AbstractPrinter):
if not self.contracts:
return
info += blue('Child_Contract -> ') + green('Base_Contracts')
info += blue('Child_Contract -> ') + green('Immediate_Base_Contracts')
info += green(' [Not_Immediate_Base_Contracts]')
for child in self.contracts:
info += blue(f'\n+ {child.name}')
if child.inheritance:
info += ' -> ' + green(", ".join(map(str, child.inheritance)))
info += green('\n\nBase_Contract -> ') + blue('Child_Contracts')
immediate = child.immediate_inheritance
not_immediate = [i for i in child.inheritance if i not in immediate]
info += ' -> ' + green(", ".join(map(str, immediate)))
if not_immediate:
info += ", ["+ green(", ".join(map(str, not_immediate))) + "]"
info += green('\n\nBase_Contract -> ') + blue('Immediate_Child_Contracts')
info += blue(' [Not_Immediate_Child_Contracts]')
for base in self.contracts:
info += green(f'\n+ {base.name}')
children = list(self._get_child_contracts(base))
if children:
info += ' -> ' + blue(", ".join(map(str, children)))
immediate = [child for child in children if base in child.immediate_inheritance]
not_immediate = [child for child in children if not child in immediate]
info += ' -> ' + blue(", ".join(map(str, immediate)))
if not_immediate:
info += ', [' + blue(", ".join(map(str, not_immediate))) + ']'
self.info(info)

@ -59,7 +59,7 @@ class PrinterInheritanceGraph(AbstractPrinter):
"""
ret = ''
# Add arrows
for i in contract.inheritance:
for i in contract.immediate_inheritance:
ret += '%s -> %s;\n' % (contract.name, i)
# Functions

Loading…
Cancel
Save