jendrikseipp / vulture

Find dead Python code
MIT License
3.29k stars 145 forks source link

Adds asttokens and progress update #311

Closed anudaweerasinghe closed 1 year ago

anudaweerasinghe commented 1 year ago

Our progress thus far on issue #304

Based on these findings, here is a high level approach of the solution we will implement:

Debug output is attached below. See enum_scope.txt for more details.

Module(
    body=[
        ImportFrom(
            module='enum',
            names=[
                alias(name='Enum')],
            level=0),
        ClassDef(
            name='E',
            bases=[
                Name(id='Enum', ctx=Load())],
            keywords=[],
            body=[
                Assign(
                    targets=[
                        Name(id='A', ctx=Store())],
                    value=Constant(value=1)),
                Assign(
                    targets=[
                        Name(id='B', ctx=Store())],
                    value=Constant(value=2))],
            decorator_list=[])],
    type_ignores=[])
Module(
    body=[
        Import(
            names=[
                alias(name='enum')]),
        ClassDef(
            name='EnumWhitelist',
            bases=[
                Attribute(
                    value=Name(id='enum', ctx=Load()),
                    attr='Enum',
                    ctx=Load())],
            keywords=[],
            body=[
                Assign(
                    targets=[
                        Name(id='EnumWhitelist', ctx=Store())],
                    value=Constant(value=1))],
            decorator_list=[]),
        Expr(
            value=Attribute(
                value=Attribute(
                    value=Name(id='EnumWhitelist', ctx=Load()),
                    attr='EnumWhitelist',
                    ctx=Load()),
                attr='_name_',
                ctx=Load())),
        Expr(
            value=Attribute(
                value=Attribute(
                    value=Name(id='EnumWhitelist', ctx=Load()),
                    attr='EnumWhitelist',
                    ctx=Load()),
                attr='_value_',
                ctx=Load()))],
    type_ignores=[])
enum_test.py:3: unused class 'E' (60% confidence)
enum_test.py:4: unused variable 'A' (60% confidence)
enum_test.py:5: unused variable 'B' (60% confidence)