我正在考虑构建一个在 c# 代码中发现违反 demeter 法则的工具。显然,如果有其他可用的替代方法,我不想重新发明轮子并构建另一个工具,但是我没有幸运地专门为 c# 代码寻找这样的工具。
在同一问题上还有另一个关于堆栈溢出的主题(here),但我认为建议的解决方案(例如,使用正则表达式来发现 LoD 违规)只会捕获简单的违规。例如,考虑以下代码(并假设人员对象已经存在):
Wallet wallet = person.Wallet;
DriversLicense license = wallet.DriversLicense;
这显然是 LoD 违规(与 相同DriversLicense license = person.Wallet.DriversLicense
),但更难检测。
我在这里和这里找到了一些关于如何在 c# 中检查违反 demeter 法则的线程,但没有针对特定工具的答案。
你知道有什么工具能够发现以前在 c# 代码中出现的那种 LoD 违规行为吗?