我有一个.NET项目(C#),在我的代码中有一个这样的函数:
public void myFunction(string myStr)
{
myStr = "This is not an empty string";
if(String.IsNullOrEmpty(myStr))
{
DoSomething();
}
}
我想分析我的应用程序,看看是否存在永远无法访问的代码块。我怎么能这样做?
答案 0 :(得分:1)
使用ReSharper提高您的代码效率。 检查其中一个功能中的不可用代码区域。
答案 1 :(得分:1)
要做到这一点,您需要对所有控制路径中的值进行符号分析,并使用布尔符号简化来确定条件是否为真。例如:
void bar(...a) {
...
x=2*a;
if (...) x=17;
foo(x)
...
}
void foo(int x) {
if (x<a && !x>5) { // dead code if called from bar ...
...
要知道死代码行真的死了,你必须找到所有调用 foo并验证每一个都会导致这种情况发生。所以你需要 一个全局调用图,需要进行全局函数指针分析 你需要全球化,因此需要本地分析......
我不知道有任何现成的工具可以做到这一点。
可以通过程序转换系统进行一些努力。我们的DMS Software Reengineering Toolkit拥有所有提到的C机器。 虽然所有这些机器还没有用于C#,但它实际上是以一种语言不可知的方式实现的,因此为C#实现这一目标只是汗水,但并非不切实际。
答案 2 :(得分:-1)
您可能希望使用ReSharper之类的工具,这些工具可以在开发时进行代码质量分析。它会给你一些警告,例如“代码是启发式无法访问”