用于检测未使用方法的 C# 属性

C# Attribute to detect unused methods

是否可以编写一个属性来跟踪方法以检测这些方法是否从未被调用?

[Track]
void MyMethod(){

}

输出:

warning: method "MyMethod" in "MyClass" has no references in code.

在编译时不一定需要运行,但它应该在应用程序初始化时起作用(无论如何在编译时更好)。

这个标签将被添加到音频库的 track methods 中,因为音频重构非常频繁,我们通常会在代码中搜索引用为 0 的音频方法,我们希望标记这些方法方法,以便我们可以快速检测并删除未使用的音频资产。

基本上我们每增加一个新的音效,以后可能就不再触发(调用它的方法),音频file/playback代码可以在应用中长期保留。

也许这就是您正在寻找的答案?

你可以使用那里的代码通过我想说的反射来自动化你自己的东西

这里找到部分答案:

C# reflection and finding all references

我可以使用该信息来获取对标有特定属性的方法的引用,但那是一个 run-time 脚本(但聊胜于无)。

有点晚,但总比没有好:我使用 Gnu 的 WinGrep 搜索所有文件夹和文件的方法名称:

`C:\>grep -irw "method_name" * --include=*.cs --include=*.sql --include=*.txt`

您可以根据需要添加尽可能多或尽可能少的文件扩展名。在上面的示例中,我将顶级目录显示为 C:,但您可以从任何有意义的目录开始搜索。

与基于 IDE 的搜索相比,使用 grep 的巨大优势在于它将搜索多个项目和解决方案。