有没有办法在Python模块中找到未修饰的类/函数?

问题描述 投票:0回答:1

我正在尝试编写一个工具,它将帮助我在大量使用装饰器的现有大型Python代码库中找到实现错误。

假设我有一个文件,

rules.py

manager = RuleManager()

@manager.register
class A:
    pass

class B:
    pass

假设我已经提前知道使用装饰器的 Manager 类是什么。

我怎么会发现B类是未修饰的?

理想情况下,输出将包括类似

/path/to/rules.py:`B` is undecorated by any manager

的内容
python abstract-syntax-tree python-decorators
1个回答
0
投票

您可以使用带有负向后查找的正则表达式:

(?<!@manager\.register\n)class .*

演示

© www.soinside.com 2019 - 2024. All rights reserved.