微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果方法的实现在Smalltalk中至少出现两次“断言”,则列出方法

如何解决如果方法的实现在Smalltalk中至少出现两次“断言”,则列出方法

如果他们的实现在Smalltalk中至少出现两次“ assert”一词,我想获得类的方法列表。

有人可以帮我吗?预先感谢!

解决方法

我不确定gnu-Smalltalk的详细信息,但是在Pharo中,您可以执行以下操作:

YourClass methods select: [ :method |
    method sourceCode matchesRegex: '.*assert.*assert.*'. ]

在这里,我使用一个简单的正则表达式来查看我是否可以在源代码中匹配两个“断言”字。

但是,借助Smalltalk,可以轻松进行更精确的搜索。图像,您想查看一个方法是否发送至少两个assert:消息。您可以通过以下方式找到此类方法:

YourClass methods select: [ :method |
    | numAsserts |
    numAsserts := method ast allChildren count: [ :node |
        node isMessage and: [ node selector = #assert: ] ].
    numAsserts >= 2
]

在上面的示例中,对于每种方法,我们只需计算消息发送的AST节点的数量,并使用assert:选择器。然后我们检查这些节点的数量是否大于或等于2。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。