清除不需要的代码C#

清除不需要的代码C#,c#,visual-studio-macros,C#,Visual Studio Macros,我在VisualStudio2005上得到了一个C#应用程序。 该守则约有300 KLOC,已被滥用超过3年 当我浏览代码时,发现了很多未使用的函数/方法/属性。手动清理代码是不可能的(需要检查每个成员,如果没有找到引用,则将其删除。) 我希望通过VS宏自动化这个过程,它将遍历代码中的每个成员,如果它没有任何引用,则应将其删除,如果找到任何引用,则检查其调用成员的引用,如果调用成员没有任何引用,则应将其删除,依此类推 我相信有人会更早地破解它。有一个干净的代码函数,可以很好地指示哪些方法/类没有

我在VisualStudio2005上得到了一个C#应用程序。 该守则约有300 KLOC,已被滥用超过3年

当我浏览代码时,发现了很多未使用的函数/方法/属性。手动清理代码是不可能的(需要检查每个成员,如果没有找到引用,则将其删除。)

我希望通过VS宏自动化这个过程,它将遍历代码中的每个成员,如果它没有任何引用,则应将其删除,如果找到任何引用,则检查其调用成员的引用,如果调用成员没有任何引用,则应将其删除,依此类推


我相信有人会更早地破解它。

有一个干净的代码函数,可以很好地指示哪些方法/类没有被使用。

您可以使用CQL查询您的代码库,以找出哪些方法和类没有被使用。

第一次使用时,正如其他人所建议的那样,会更加清晰


Resharper假定外部程序集在某个地方使用了公共方法,即使它们不是,所以搜索“public”并将其替换为“private”,然后重新编译。

小心通过反射调用的代码。许多重构工具会将这些代码标记为未被访问,而实际上它们是被访问的


最安全的方法是在重构之前和之后运行单元测试(您的测试已经正确了吗?),以确保一切仍然正常。

我使用(比如FxCop)来确定哪些代码没有被调用。好吧,它不可能是自动的,但至少你不需要一行一行地去做。

我不确定它是否是自动的。。。但是Resharper会指出一个方法是否有任何引用。NDepend将通过向您提供有关大多数使用的类型、类型之间的依赖关系、直接和间接依赖关系、类型和方法的测量复杂性等信息,帮助您进一步了解代码库。希望应用程序不会使用反射来调用方法。