Pharo和Squeak Smalltalk:在包中列出未实现的方法?

Pharo和Squeak Smalltalk:在包中列出未实现的方法?,smalltalk,squeak,pharo,Smalltalk,Squeak,Pharo,如何在一个包中列出所有未实现的方法?假设该方法应该在该包中实现,而不是在其他包中实现(例如在包外的超类或对象中) 编辑:是的,我想知道“未实现的已发送消息”,但将分析限制在一个特定的给定包内,例如: FooPackage unimplementedMessageSends。我还没有完全测试过这一点,所以您可能需要对其进行一些调整以满足您的要求,但从我对您的问题的理解来看,您可能想要这样的东西: | allMethodsSent allMethodsImplemented | allMethods

如何在一个包中列出所有未实现的方法?假设该方法应该在该包中实现,而不是在其他包中实现(例如在包外的超类或对象中)

编辑:是的,我想知道“未实现的已发送消息”,但将分析限制在一个特定的给定包内,例如:


FooPackage unimplementedMessageSends。

我还没有完全测试过这一点,所以您可能需要对其进行一些调整以满足您的要求,但从我对您的问题的理解来看,您可能想要这样的东西:

| allMethodsSent allMethodsImplemented |
allMethodsSent := IdentitySet new.
allMethodsImplemented := IdentitySet new.
(SystemOrganization listAtCategoryNamed: #'Collections-Arrayed')
    do: [:eachClassName |
        (Smalltalk at: eachClassName) methodDictionary valuesDo: [:eachMethod |
            allMethodsSent addAll: eachMethod messages.
            ].
        allMethodsImplemented addAll: (Smalltalk at: eachClassName) selectors
        ].
^allMethodsSent
    removeAllFoundIn: allMethodsImplemented;
    yourself
希望这能帮助您入门,如果您需要调整它,请查看类
行为
(查看您可以使用什么,而不是更改它!)、
编译方法
、以及
系统组织

显然,这个示例使用了类别(我假设这就是您所说的包?)“Collections Arrayed”,但您当然可以对其进行调整,使其成为一个方法参数,例如:

MyUtilClass unimplementedMessageSendsFor: aCategorySymbol

我还没有完全测试过这一点,所以您可能需要对其进行一些调整以满足您的需求,但从我对您的问题的理解来看,您可能想要这样的东西:

| allMethodsSent allMethodsImplemented |
allMethodsSent := IdentitySet new.
allMethodsImplemented := IdentitySet new.
(SystemOrganization listAtCategoryNamed: #'Collections-Arrayed')
    do: [:eachClassName |
        (Smalltalk at: eachClassName) methodDictionary valuesDo: [:eachMethod |
            allMethodsSent addAll: eachMethod messages.
            ].
        allMethodsImplemented addAll: (Smalltalk at: eachClassName) selectors
        ].
^allMethodsSent
    removeAllFoundIn: allMethodsImplemented;
    yourself
希望这能帮助您入门,如果您需要调整它,请查看类
行为
(查看您可以使用什么,而不是更改它!)、
编译方法
、以及
系统组织

显然,这个示例使用了类别(我假设这就是您所说的包?)“Collections Arrayed”,但您当然可以对其进行调整,使其成为一个方法参数,例如:

MyUtilClass unimplementedMessageSendsFor: aCategorySymbol

这个问题我仔细读了好几遍,不知道你在问什么。也许增加一个具体的例子会有帮助,我也不理解这个问题。也许作者想知道发送的未实现的消息?或者他想知道有未定义子类职责的方法?这两个问题都可以在作为重构引擎一部分的CodeCritics中找到。我仔细阅读了好几遍这个问题,不知道你在问什么。也许增加一个具体的例子会有帮助,我也不理解这个问题。也许作者想知道发送的未实现的消息?或者他想知道有未定义子类职责的方法?这两个问题都可以在作为重构引擎一部分的CodeCritics中找到。