Maroc-OS/decompiler

View on GitHub
src/ssa.py

Summary

Maintainability
F
6 days
Test Coverage

File ssa.py has 578 lines of code (exceeds 250 allowed). Consider refactoring.
Open

""" Transform a function into and out of SSA form.

"""

import propagator
Severity: Major
Found in src/ssa.py - About 1 day to fix

    Function statements has a Cognitive Complexity of 29 (exceeds 5 allowed). Consider refactoring.
    Open

      def statements(self):
        """ return all statements that are part of the live range,
            from assignment to the use. """
        if self.use is None:
          return [self.definition_stmt]
    Severity: Minor
    Found in src/ssa.py - About 4 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function interfere has a Cognitive Complexity of 28 (exceeds 5 allowed). Consider refactoring.
    Open

      def interfere(self, op1, op2):
        """ return intersecting statements between the live ranges of op1 and op2 """
        if op1.definition:
          for range1 in self.live_ranges_for(op1):
            for range2 in self.live_ranges_for(op2):
    Severity: Minor
    Found in src/ssa.py - About 4 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function restored_locations has a Cognitive Complexity of 25 (exceeds 5 allowed). Consider refactoring.
    Open

      def restored_locations(self):
        """ Find all restored locations.
    
          A restored location is defined as any location (register
          or dereference) which resolves to the original value it had
    Severity: Minor
    Found in src/ssa.py - About 3 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function is_restored has a Cognitive Complexity of 24 (exceeds 5 allowed). Consider refactoring.
    Open

      def is_restored(self, expr):
        start = [expr]
        checked = [] # keep track of checked values to avoid recursion
        while len(start) > 0:
          current = start.pop(0)
    Severity: Minor
    Found in src/ssa.py - About 3 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Cyclomatic complexity is too high in method verify. (15)
    Open

      def verify(self):
        """ verify that the ssa form is coherent. """
        for op in iterators.operand_iterator_t(self.function):
          if not isinstance(op, assignable_t):
            continue
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Function live_blocks_for_use has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring.
    Open

      def live_blocks_for_use(self, use):
        block = use.parent_statement.container.block
        contexts = self.entry_contexts(block)
        live_blocks = [block]
        for context in contexts:
    Severity: Minor
    Found in src/ssa.py - About 3 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Cyclomatic complexity is too high in method is_restored. (13)
    Open

      def is_restored(self, expr):
        start = [expr]
        checked = [] # keep track of checked values to avoid recursion
        while len(start) > 0:
          current = start.pop(0)
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in method statements. (13)
    Open

      @property
      def statements(self):
        """ return all statements that are part of the live range,
            from assignment to the use. """
        if self.use is None:
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in method live_blocks_for_use. (12)
    Open

      def live_blocks_for_use(self, use):
        block = use.parent_statement.container.block
        contexts = self.entry_contexts(block)
        live_blocks = [block]
        for context in contexts:
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in method interfere. (11)
    Open

      def interfere(self, op1, op2):
        """ return intersecting statements between the live ranges of op1 and op2 """
        if op1.definition:
          for range1 in self.live_ranges_for(op1):
            for range2 in self.live_ranges_for(op2):
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in method restored_locations. (10)
    Open

      def restored_locations(self):
        """ Find all restored locations.
    
          A restored location is defined as any location (register
          or dereference) which resolves to the original value it had
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in class live_range_t. (8)
    Open

    class live_range_t(object):
      """ Live range object contains references to each
          statements where the definition is "live". """
    
      def __init__(self, expr, live_blocks):
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in method statement. (8)
    Open

      def statement(self, context, stmt):
        for expr in stmt.expressions:
          self.assign_definitions(context, expr)
    
        if type(stmt) == goto_t and stmt.is_known() and \
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in method propagate. (7)
    Open

      def propagate(self):
        for stmt in iterators.statement_iterator_t(self.function):
          if type(stmt.expr) != assign_t:
            continue
          if isinstance(stmt.expr.op2, phi_t) and len(stmt.expr.op2) == 2:
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in method rename_groups. (6)
    Open

      def rename_groups(self, phi, groups):
    
        if len(groups) == 1:
          if type(phi.parent) == assign_t:
            if not self.insersect_with_group(groups[0], phi.parent.op1, phi):
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in method fetch_recursive_definition. (6)
    Open

      def fetch_recursive_definition(self, context, use):
    
        _def = context.get_local_definition(use)
        if _def:
          return _def
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in method statement. (6)
    Open

      def statement(self, context, stmt):
        for expr in stmt.expressions:
          for use in self.uses(expr):
            if use.definition is None:
              self.process_use(context, stmt, use)
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Cyclomatic complexity is too high in method propagate. (6)
    Open

      def propagate(self):
        for stmt in iterators.statement_iterator_t(self.function):
          if type(stmt.expr) != assign_t:
            continue
          if isinstance(stmt.expr.op2, phi_t) and len(stmt.expr.op1.uses) == 1 and \
    Severity: Minor
    Found in src/ssa.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Function rename_groups has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring.
    Open

      def rename_groups(self, phi, groups):
    
        if len(groups) == 1:
          if type(phi.parent) == assign_t:
            if not self.insersect_with_group(groups[0], phi.parent.op1, phi):
    Severity: Minor
    Found in src/ssa.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function verify has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
    Open

      def verify(self):
        """ verify that the ssa form is coherent. """
        for op in iterators.operand_iterator_t(self.function):
          if not isinstance(op, assignable_t):
            continue
    Severity: Minor
    Found in src/ssa.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function statement has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
    Open

      def statement(self, context, stmt):
        for expr in stmt.expressions:
          for use in self.uses(expr):
            if use.definition is None:
              self.process_use(context, stmt, use)
    Severity: Minor
    Found in src/ssa.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function propagate has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
    Open

      def propagate(self):
        for stmt in iterators.statement_iterator_t(self.function):
          if type(stmt.expr) != assign_t:
            continue
          if isinstance(stmt.expr.op2, phi_t) and len(stmt.expr.op2) == 2:
    Severity: Minor
    Found in src/ssa.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function statement has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
    Open

      def statement(self, context, stmt):
        for expr in stmt.expressions:
          self.assign_definitions(context, expr)
    
        if type(stmt) == goto_t and stmt.is_known() and \
    Severity: Minor
    Found in src/ssa.py - About 45 mins to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Avoid deeply nested control flow statements.
    Open

                if r in restored_grouped.keys():
                  restored_grouped[r].append(_def)
                else:
                  restored_grouped[r] = [_def]
    
    
    Severity: Major
    Found in src/ssa.py - About 45 mins to fix

      Function fetch_recursive_definition has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
      Open

        def fetch_recursive_definition(self, context, use):
      
          _def = context.get_local_definition(use)
          if _def:
            return _def
      Severity: Minor
      Found in src/ssa.py - About 25 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function propagate has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
      Open

        def propagate(self):
          for stmt in iterators.statement_iterator_t(self.function):
            if type(stmt.expr) != assign_t:
              continue
            if isinstance(stmt.expr.op2, phi_t) and len(stmt.expr.op1.uses) == 1 and \
      Severity: Minor
      Found in src/ssa.py - About 25 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Similar blocks of code found in 2 locations. Consider refactoring.
      Open

          if op1.definition:
            for range1 in self.live_ranges_for(op1):
              for range2 in self.live_ranges_for(op2):
                if range1.definition.parent_statement is range2.use.parent_statement:
                  continue
      Severity: Major
      Found in src/ssa.py and 1 other location - About 3 hrs to fix
      src/ssa.py on lines 639..645

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 68.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Similar blocks of code found in 2 locations. Consider refactoring.
      Open

          if op2.definition:
            for range1 in self.live_ranges_for(op1):
              for range2 in self.live_ranges_for(op2):
                if range2.definition.parent_statement is range1.use.parent_statement:
                  continue
      Severity: Major
      Found in src/ssa.py and 1 other location - About 3 hrs to fix
      src/ssa.py on lines 632..638

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 68.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Identical blocks of code found in 2 locations. Consider refactoring.
      Open

              if not self.insersect_with_group(groups[0], phi.parent.op1, phi):
                var = phi.parent.op1
                phi.parent_statement.remove()
              else:
                name = 'v%u' % (self.var_n, )
      Severity: Major
      Found in src/ssa.py and 1 other location - About 2 hrs to fix
      src/ssa.py on lines 687..700

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 51.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Identical blocks of code found in 2 locations. Consider refactoring.
      Open

            if type(phi.parent) == assign_t:
              if not self.insersect_with_group(groups[0], phi.parent.op1, phi):
                var = phi.parent.op1
                phi.parent_statement.remove()
              else:
      Severity: Major
      Found in src/ssa.py and 1 other location - About 2 hrs to fix
      src/ssa.py on lines 688..695

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 51.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Similar blocks of code found in 2 locations. Consider refactoring.
      Open

            for stmt in end.container[:self.use_stmt.index()+1]:
              stmts.append(stmt)
      Severity: Minor
      Found in src/ssa.py and 1 other location - About 45 mins to fix
      src/ssa.py on lines 284..285

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 35.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Similar blocks of code found in 2 locations. Consider refactoring.
      Open

              for stmt in start.container[:self.use_stmt.index()+1]:
                stmts.append(stmt)
      Severity: Minor
      Found in src/ssa.py and 1 other location - About 45 mins to fix
      src/ssa.py on lines 297..298

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 35.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Line too long (81 > 79 characters)
      Open

          index = pstmt.index() if use.parent_statement.container.block is block else 0
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

        def __init__(self, block, parent=None):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            for expr in (stmt.true, stmt.false):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def insert_exit_definition(self, context, _def):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def create_uninitialized(self, use):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def fetch_recursive_definitions_for_contexts(self, contexts, use):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.assign_definitions(context, expr)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def __init__(self, function, selector):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4 (comment)
      Open

            # we've reached a block with no parent, which means
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            context.assign(op)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        """ phase 2: for each start of block, add phi statements where necessary """
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.index += 1
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def get_recursive_definition(self, expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (91 > 79 characters)
      Open

          if not other_def or other_def.parent_statement.index() < _def.parent_statement.index():
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

            self.indexify(_def)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            return _def
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            return loc
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.defined.remove(obj)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Expected 2 blank lines, found 1
      Open

      class ssa_contextual_iterator_t(object):
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Indentation is not a multiple of 4
      Open

        def uses(self, expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def statement(self, context, stmt):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                self.traverse(ssa_context_t(target, context))
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.exit_contexts[context.block] = context
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def __init__(self, function, selector, exit_contexts):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (121 > 79 characters)
      Open

            raise RuntimeError('something might be wrong, the definition for %s is an empty phi-statement' % (stmt.expr.op1, ))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

        def statement(self, context, stmt):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            start = self.live_blocks[0]
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            intermediates = self.live_blocks[1:-1]
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (90 > 79 characters)
      Open

              for stmt in start.container[self.definition_stmt.index():self.use_stmt.index()+1]:
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

        def parent_context_iterator(self, context):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def __init__(self, function):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (80 > 79 characters)
      Open

          return self.tag_step(SSA_STEP_ARGUMENTS, lambda loc: isinstance(loc, arg_t))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

            if not isinstance(rvalue, assignable_t):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def verify_definition_has_use(self, defn, wanted_use):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                self.propagate_to(stmt.expr.op1, stmt.expr.op2[0])
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            copy = expr.copy(with_definition=True)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                if range1.definition.parent_statement is range2.use.parent_statement:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def add_to_appropriate_group(self, groups, expr, phi):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            for _expr in groups[0]:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            print '   ', repr(groups)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Continuation line over-indented for visual indent
      Open

                stmt.expr.value in self.function.blocks:
      Severity: Minor
      Found in src/ssa.py by pep8

      Continuation lines indentation.

      Continuation lines should align wrapped elements either vertically
      using Python's implicit line joining inside parentheses, brackets
      and braces, or using a hanging indent.
      
      When using a hanging indent these considerations should be applied:
      - there should be no arguments on the first line, and
      - further indentation should be used to clearly distinguish itself
        as a continuation line.
      
      Okay: a = (\n)
      E123: a = (\n    )
      
      Okay: a = (\n    42)
      E121: a = (\n   42)
      E122: a = (\n42)
      E123: a = (\n    42\n    )
      E124: a = (24,\n     42\n)
      E125: if (\n    b):\n    pass
      E126: a = (\n        42)
      E127: a = (24,\n      42)
      E128: a = (24,\n    42)
      E129: if (a or\n    b):\n    pass
      E131: a = (\n    42\n 24)

      Indentation is not a multiple of 4
      Open

        def entry_contexts(self, block):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            copy.definition = _def
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                self.process_use(context, stmt, use)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        """ Live range object contains references to each
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4 (comment)
      Open

            # definition is uninitialized in this function
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.use_stmt = expr.parent_statement
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                stmts.append(stmt)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def live_blocks_for_use(self, use):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if not isinstance(current.parent, assign_t):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def spoiled_locations(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Expected 2 blank lines, found 1
      Open

      class ssa_context_t(object):
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Indentation is not a multiple of 4
      Open

        def simplify(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            return self.parent.get_recursive_definition(expr)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if use is wanted_use:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            target = self.function.blocks[stmt.expr.value]
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        """ we have a phi definition that has only one use, and the
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.traverse(ssa_context_t(target, context))
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            pass
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Unexpected spaces around keyword / parameter equals
      Open

          _def = use.copy(with_definition = True)
      Severity: Minor
      Found in src/ssa.py by pep8

      Don't use spaces around the '=' sign in function arguments.

      Don't use spaces around the '=' sign when used to indicate a
      keyword argument or a default parameter value, except when
      using a type annotation.
      
      Okay: def complex(real, imag=0.0):
      Okay: return magic(r=real, i=imag)
      Okay: boolean(a == b)
      Okay: boolean(a != b)
      Okay: boolean(a <= b)
      Okay: boolean(a >= b)
      Okay: def foo(arg: int = 42):
      Okay: async def foo(arg: int = 42):
      
      E251: def complex(real, imag = 0.0):
      E251: return magic(r = real, i = imag)
      E252: def complex(real, image: float=0.0):

      Indentation is not a multiple of 4
      Open

            if isinstance(stmt.expr.op2, phi_t) and len(stmt.expr.op1.uses) == 1 and \
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def fetch_recursive_definition(self, context, use):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def live_ranges_for(self, op):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4 (comment)
      Open

            # the use is uninitialized on this path.
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            start = None
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if not r or r.index != use.index:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            for parent in self.parent_context_iterator(context):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def __init__(self, function):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def propagate(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            use.unlink()
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (81 > 79 characters)
      Open

          """ return intersecting statements between the live ranges of op1 and op2 """
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

            expr = pool.pop(0)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                phi.parent_statement.remove()
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.rename_groups(phi, groups)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (84 > 79 characters)
      Open

          return [op for op in expr.iteroperands() if self.selector(op) and not op.is_def]
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

        def traverse(self, context):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            return _def
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            copy = _def.copy(with_definition = True)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.is_uninitialized = self.definition.is_uninitialized
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if self.definition_stmt.index() >= self.use_stmt.index():
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            r = context.get_recursive_definition(use)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      At least two spaces before inline comment
      Open

          checked = [] # keep track of checked values to avoid recursion
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate inline comments by at least two spaces.

      An inline comment is a comment on the same line as a statement.
      Inline comments should be separated by at least two spaces from the
      statement. They should start with a # and a single space.
      
      Each line of a block comment starts with a # and a single space
      (unless it is indented text inside the comment).
      
      Okay: x = x + 1  # Increment x
      Okay: x = x + 1    # Increment x
      Okay: # Block comment
      E261: x = x + 1 # Increment x
      E262: x = x + 1  #Increment x
      E262: x = x + 1  #  Increment x
      E265: #Block comment
      E266: ### Block comment

      Indentation is not a multiple of 4
      Open

            if type(stmt.expr) != assign_t:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Expected 2 blank lines, found 1
      Open

      class ssa_self_reference_propagator(object):
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Indentation is not a multiple of 4
      Open

            for range1 in self.live_ranges_for(op1):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            groups = self.find_intersection_groups(phi)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Unexpected spaces around keyword / parameter equals
      Open

            copy = _def.copy(with_definition = True)
      Severity: Minor
      Found in src/ssa.py by pep8

      Don't use spaces around the '=' sign in function arguments.

      Don't use spaces around the '=' sign when used to indicate a
      keyword argument or a default parameter value, except when
      using a type annotation.
      
      Okay: def complex(real, imag=0.0):
      Okay: return magic(r=real, i=imag)
      Okay: boolean(a == b)
      Okay: boolean(a != b)
      Okay: boolean(a <= b)
      Okay: boolean(a >= b)
      Okay: def foo(arg: int = 42):
      Okay: async def foo(arg: int = 42):
      
      E251: def complex(real, imag = 0.0):
      E251: return magic(r = real, i = imag)
      E252: def complex(real, image: float=0.0):

      Indentation is not a multiple of 4
      Open

            self.definition = expr.definition
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                stmts.append(stmt)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def entry_contexts(self, block):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Test for membership should be 'not in'
      Open

              if not rblock in contexts:
      Severity: Minor
      Found in src/ssa.py by pep8

      Negative comparison should be done using "not in" and "is not".

      Okay: if x not in y:\n    pass
      Okay: assert (X in Y or X is Z)
      Okay: if not (X in Y):\n    pass
      Okay: zz = x is not y
      E713: Z = not X in Y
      E713: if not X.B in Y:\n    pass
      E714: if not X is Y:\n    pass
      E714: Z = not X.B is Y

      Line too long (146 > 79 characters)
      Open

                assert stmt is self.function.uninitialized_stmt or stmt.container, "%s: has a definition which is unlinked from the tree" % (repr(op), )
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

                continue
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            use.unlink()
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.definition_stmt = expr.parent_statement
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        """ Iterates over the function statements and determines the live
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def __init__(self, function):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                break
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def tag_derefs(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def tag_arguments(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def is_restored(self, expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (129 > 79 characters)
      Open

              assert op.definition.index == op.index, "%s: expected to have the same index as its definition: %s" % (op, op.definition)
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (238 > 79 characters)
      Open

              assert use.definition is op, '%s: has a use that points to another definition\n  use: %s\n  wrong def: %s\n  should be: %s' % (repr(op), repr(use.parent_statement), repr(use.definition.parent_statement), repr(op.parent_statement))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (80 > 79 characters)
      Open

            if isinstance(stmt.expr.op2, phi_t) and len(stmt.expr.op1.uses) == 1 and \
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

            if type(stmt.expr) != assign_t:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def propagate_to(self, defn, expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def rename_groups(self, phi, groups):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                self.var_n += 1
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def transform(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def get_local_definition(self, expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        """ phase 1: collect live assignments at the end of each block """
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def traverse(self, context):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def create_phi(self, context, use):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.is_uninitialized = False
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4 (comment)
      Open

            # expression which stops the live range
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                stmts.append(stmt)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            for block in intermediates:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Expected 2 blank lines, found 1
      Open

      class live_range_iterator_t(ssa_phase1_t):
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Line too long (87 > 79 characters)
      Open

            self.all_uses += [defn for defn in self.definitions(expr) if len(defn.uses) == 0]
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (85 > 79 characters)
      Open

          return self.tag_step(SSA_STEP_DEREFERENCES, lambda loc: isinstance(loc, deref_t))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

            current = start.pop(0)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            elif rvalue.definition:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                    restored_grouped[r] = [_def]
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                stmt = op.definition.parent_statement
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (97 > 79 characters)
      Open

              assert stmt, "%s: has a use (%s) which is unlinked from the tree" % (repr(op), repr(use))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Expected 2 blank lines, found 1
      Open

      class ssa_back_transformer_t(object):
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Indentation is not a multiple of 4
      Open

            if not self.insersect_with_group(group, expr, phi):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def replace_uses(self, expr, new):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            use.replace(new.copy())
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                phi.replace(var.copy())
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            op.index = None
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if _loc.no_index_eq(expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def definitions(self, expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            return
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Expected 2 blank lines, found 1
      Open

      class ssa_phase1_t(ssa_contextual_iterator_t):
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Indentation is not a multiple of 4
      Open

        def indexify(self, expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if _def not in external_defs:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Unexpected spaces around keyword / parameter equals
      Open

            copy = _def.copy(with_definition = True)
      Severity: Minor
      Found in src/ssa.py by pep8

      Don't use spaces around the '=' sign in function arguments.

      Don't use spaces around the '=' sign when used to indicate a
      keyword argument or a default parameter value, except when
      using a type annotation.
      
      Okay: def complex(real, imag=0.0):
      Okay: return magic(r=real, i=imag)
      Okay: boolean(a == b)
      Okay: boolean(a != b)
      Okay: boolean(a <= b)
      Okay: boolean(a >= b)
      Okay: def foo(arg: int = 42):
      Okay: async def foo(arg: int = 42):
      
      E251: def complex(real, imag = 0.0):
      E251: return magic(r = real, i = imag)
      E252: def complex(real, image: float=0.0):

      Indentation is not a multiple of 4
      Open

            copy.index = _def.index
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if rvalue in list(self.function.uninitialized) and rvalue.no_index_eq(expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            elif isinstance(rvalue, phi_t):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                if t in self.function.uninitialized:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                start.append(rvalue.definition)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                    restored_grouped[r].append(_def)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                assert stmt, "%s: has a definition which is unlinked from the tree\n  def: %s" % (repr(op), repr(op.definition))
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def run(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def propagate(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def propagate_to(self, src, dest):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                if range1.definition.parent_statement in range2.statements:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if _def is None:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            return
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.definition_stmt = expr.definition.parent_statement
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        @property
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            parent = parent.parent
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                live_blocks.append(parent.block)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def statement(self, context, stmt):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def tag_variables(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if len(locs) == len(return_blocks):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (175 > 79 characters)
      Open

          raise RuntimeError("%s was not a use of its definition:\n  def: %s\n  use: %s" % (repr(wanted_use.parent), repr(defn.parent_statement), repr(wanted_use.parent_statement)))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

                assert stmt is self.function.uninitialized_stmt or stmt.container, "%s: has a definition which is unlinked from the tree" % (repr(op), )
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if self.interfere(this, expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            phi.unlink()
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.statement(context, stmt)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if use.no_index_eq(_def):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Expected 2 blank lines, found 1
      Open

      class live_range_t(object):
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Indentation is not a multiple of 4
      Open

                stmts.append(stmt)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            yield parent
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if not use.is_def and use.definition and use.definition.is_uninitialized:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Expected 2 blank lines, found 1
      Open

      class ssa_tagger_t(object):
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Block comment should start with '# '
      Open

          #self.__uninitialized += p2.uninitialized
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate inline comments by at least two spaces.

      An inline comment is a comment on the same line as a statement.
      Inline comments should be separated by at least two spaces from the
      statement. They should start with a # and a single space.
      
      Each line of a block comment starts with a # and a single space
      (unless it is indented text inside the comment).
      
      Okay: x = x + 1  # Increment x
      Okay: x = x + 1    # Increment x
      Okay: # Block comment
      E261: x = x + 1 # Increment x
      E262: x = x + 1  #Increment x
      E262: x = x + 1  #  Increment x
      E265: #Block comment
      E266: ### Block comment

      Indentation is not a multiple of 4
      Open

        def tag_registers(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def restored_locations(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                restored[loc] = r
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if op.definition:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if op not in dest:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def run(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if isinstance(stmt.expr.op2, phi_t) and len(stmt.expr.op2) == 2:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                if range2.definition.parent_statement in range1.statements:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def find_intersection_groups(self, phi):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                var = var_t(None, name=name)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def assign(self, expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def __init__(self, function, selector):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (80 > 79 characters)
      Open

          return [op for op in expr.iteroperands() if self.selector(op) and op.is_def]
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Unexpected spaces around keyword / parameter equals
      Open

          _def = use.copy(with_definition = True)
      Severity: Minor
      Found in src/ssa.py by pep8

      Don't use spaces around the '=' sign in function arguments.

      Don't use spaces around the '=' sign when used to indicate a
      keyword argument or a default parameter value, except when
      using a type annotation.
      
      Okay: def complex(real, imag=0.0):
      Okay: return magic(r=real, i=imag)
      Okay: boolean(a == b)
      Okay: boolean(a != b)
      Okay: boolean(a <= b)
      Okay: boolean(a >= b)
      Okay: def foo(arg: int = 42):
      Okay: async def foo(arg: int = 42):
      
      E251: def complex(real, imag = 0.0):
      E251: return magic(r = real, i = imag)
      E252: def complex(real, image: float=0.0):

      Line too long (80 > 79 characters)
      Open

          external_defs = self.fetch_recursive_definitions_for_contexts(contexts, use)
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

            phi.append(copy)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def process_use(self, context, stmt, use):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                stmts.append(stmt)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            rvalue = current.parent.op2
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                if t.definition and t.definition not in checked:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Continuation line with same indent as next logical line
      Open

                isinstance(stmt.expr.op1.uses[0].parent, phi_t):
      Severity: Minor
      Found in src/ssa.py by pep8

      Continuation lines indentation.

      Continuation lines should align wrapped elements either vertically
      using Python's implicit line joining inside parentheses, brackets
      and braces, or using a hanging indent.
      
      When using a hanging indent these considerations should be applied:
      - there should be no arguments on the first line, and
      - further indentation should be used to clearly distinguish itself
        as a continuation line.
      
      Okay: a = (\n)
      E123: a = (\n    )
      
      Okay: a = (\n    42)
      E121: a = (\n   42)
      E122: a = (\n42)
      E123: a = (\n    42\n    )
      E124: a = (24,\n     42\n)
      E125: if (\n    b):\n    pass
      E126: a = (\n        42)
      E127: a = (24,\n      42)
      E128: a = (24,\n    42)
      E129: if (a or\n    b):\n    pass
      E131: a = (\n    42\n 24)

      Indentation is not a multiple of 4
      Open

        """ when we have phi that depends on itself plus some other
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                self.propagate_to(stmt.expr.op1, stmt.expr.op2[1])
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        """ Transform the function out of SSA form by inserting
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                name = 'v%u' % (self.var_n, )
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            else:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def find_uninitialized(self, use):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            ctx.assign(_def)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            context.assign(_def)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            _def = self.fetch_recursive_definition(context, use)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            _def = self.find_uninitialized(use)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            raise RuntimeError('something might be wrong, the definition for %s is an empty phi-statement' % (stmt.expr.op1, ))
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            intermediates = self.live_blocks[:-1]
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            else:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            live_blocks = self.live_blocks_for_use(use)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.all_uses += [defn for defn in self.definitions(expr) if len(defn.uses) == 0]
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Expected 2 blank lines after class or function definition, found 1
      Open

      SSA_STEP_NONE = 0
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Block comment should start with '# '
      Open

          #self.__uninitialized = []
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate inline comments by at least two spaces.

      An inline comment is a comment on the same line as a statement.
      Inline comments should be separated by at least two spaces from the
      statement. They should start with a # and a single space.
      
      Each line of a block comment starts with a # and a single space
      (unless it is indented text inside the comment).
      
      Okay: x = x + 1  # Increment x
      Okay: x = x + 1    # Increment x
      Okay: # Block comment
      E261: x = x + 1 # Increment x
      E262: x = x + 1  #Increment x
      E262: x = x + 1  #  Increment x
      E265: #Block comment
      E266: ### Block comment

      Line too long (82 > 79 characters)
      Open

            if rvalue in list(self.function.uninitialized) and rvalue.no_index_eq(expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

        def __init__(self, function):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def __init__(self, function):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if lr.use == op:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def insersect_with_group(self, group, expr, phi):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def __init__(self, expr, live_blocks):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def statements(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if start:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.all_uses += self.uses(expr)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                continue
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if not isinstance(op, assignable_t):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (122 > 79 characters)
      Open

                assert stmt, "%s: has a definition which is unlinked from the tree\n  def: %s" % (repr(op), repr(op.definition))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (167 > 79 characters)
      Open

              assert stmt is self.function.uninitialized_stmt or use.parent_statement.container, "%s: has a use (%s) which is unlinked from the tree" % (repr(op), repr(use))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

            for range1 in self.live_ranges_for(op1):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                self.replace_uses(_expr.definition, var)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            print 'more than one group'
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        """ the context holds live locations at any given point in time.
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def assign_definitions(self, context, expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Expected 2 blank lines, found 1
      Open

      class ssa_phase2_t(ssa_contextual_iterator_t):
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Indentation is not a multiple of 4
      Open

            expr.index = self.index
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            for use in self.uses(expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.definition = expr
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.use = None
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            for stmt in end.container[:self.use_stmt.index()+1]:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            live_ranges.append(live_range_t(use, live_blocks))
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        """ The SSA tagger iterates through the blocks in the control flow,
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (80 > 79 characters)
      Open

          return self.tag_step(SSA_STEP_VARIABLES, lambda loc: isinstance(loc, var_t))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

                r = self.is_restored(_def)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def remove_ssa_form(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.add_to_appropriate_group(groups, expr, phi)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            if type(phi.parent) == assign_t:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                var = phi.parent.op1
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            raise NotImplementedError('not implemented.')
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4 (comment)
      Open

            # definition is uninitialized in this function
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.use_stmt = None
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            self.use = expr
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            return [self.definition_stmt]
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                if parent.block not in live_blocks:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def live_ranges(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (83 > 79 characters)
      Open

          return self.tag_step(SSA_STEP_REGISTERS, lambda loc: isinstance(loc, regloc_t))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

            for contexts in self.exit_contexts.values():
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (167 > 79 characters)
      Open

              assert use.definition.index == use.index, "%s: expected to have the same index as its definition: %s" % (use.parent_statement, use.definition.parent_statement)
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

                if range2.definition.parent_statement is range1.use.parent_statement:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            for op in arg.iteroperands():
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            for _def in self.definitions(expr):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                self.indexify(_def)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4 (comment)
      Open

            # expression which stops the live range
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Line too long (84 > 79 characters)
      Open

          ssa_phase1_t.__init__(self, function, lambda loc: isinstance(loc, assignable_t))
      Severity: Minor
      Found in src/ssa.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Indentation is not a multiple of 4
      Open

        def tag_step(self, step, selector):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

                if r:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def verify(self):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            for use in op.uses:
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Expected 2 blank lines, found 1
      Open

      class ssa_chained_phi_propagator(object):
      Severity: Minor
      Found in src/ssa.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Indentation is not a multiple of 4
      Open

            pass
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

            use.replace(copy)
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      Indentation is not a multiple of 4
      Open

        def interfere(self, op1, op2):
      Severity: Minor
      Found in src/ssa.py by pep8

      Use indent_size (PEP8 says 4) spaces per indentation level.

      For really old code that you don't want to mess up, you can continue
      to use 8-space tabs.
      
      Okay: a = 1
      Okay: if a == 0:\n    a = 1
      E111:   a = 1
      E114:   # a = 1
      
      Okay: for item in items:\n    pass
      E112: for item in items:\npass
      E115: for item in items:\n# Hi\n    pass
      
      Okay: a = 1\nb = 2
      E113: a = 1\n    b = 2
      E116: a = 1\n    # b = 2

      There are no issues that match your filters.

      Category
      Status