Visual Studio - 有没有办法搜索可以执行的代码子集?

时间:2017-06-21 11:03:28

标签: visual-studio visual-studio-2015 visual-studio-extensions

不确定这是否可行,但考虑到我们可以轻松导航到方法调用的实现(或者至少是可能的实现的选择)的方式,甚至可以语法突出显示代码覆盖 - 有没有办法执行'搜索'或者概述可以在给定的突出显示部分中运行的所有代码?

I.E如果我突出显示代码

// Block array
Block[] block = new Block[150];
// Matrix
byte[] pos = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
               2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
               3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
               4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
               5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
               6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
               7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
               8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 };

// These values are increased with a Timer
int xBall = 500;
int yBall = 800;

public LevelGenerator() {
    createBlocks(pos);
}

private void createBlocks(byte[] posi)
    {
        for (int a = 0; a < posi.Length; a++)
        {
            switch (posi[a])
            {
                case 1:
                    block[a] = new Block(posi, a, form);
                    block[a].BackColor = Color.Red;
                    this.Controls.Add(block[a]);
                    block[a].BringToFront();
                    break;

                case 2:
                    block[a] = new Block(posi, a, form);
                    block[a].BackColor = Color.Orange;
                    this.Controls.Add(block[a]);
                    block[a].BringToFront();
                    break;

                case 3:
                    block[a] = new Block(posi, a, form);
                    block[a].BackColor = Color.Yellow;
                    this.Controls.Add(block[a]);
                    block[a].BringToFront();
                    break;

                case 4:
                    block[a] = new Block(posi, a, form);
                    block[a].BackColor = Color.Lime;
                    this.Controls.Add(block[a]);
                    block[a].BringToFront();
                    break;

                case 5:
                    block[a] = new Block(posi, a, form);
                    block[a].BackColor = Color.LightBlue;
                    this.Controls.Add(block[a]);
                    block[a].BringToFront();
                    break;

                case 6:
                    block[a] = new Block(posi, a, form);
                    block[a].BackColor = Color.Blue;
                    this.Controls.Add(block[a]);
                    block[a].BringToFront();
                    break;

                case 7:
                    block[a] = new Block(posi, a, form);
                    block[a].BackColor = Color.BlueViolet;
                    this.Controls.Add(block[a]);
                    block[a].BringToFront();
                    break;

                case 8:
                    block[a] = new Block(posi, a, form);
                    block[a].BackColor = Color.Purple;
                    this.Controls.Add(block[a]);
                    block[a].BringToFront();
                    break;
            }
        }
    }

我可以对X Y Z和A类中的代码进行搜索吗?或者至少可以查看为该代码段运行的所有代码?

请原谅我,如果它没有多大意义,但我认为这绝对是非常棒的,特别是当你跳进一个你不熟悉的项目时!

对于问题目的的Visual Studio,但我对任何实现此目的的IDE /插件感兴趣。

1 个答案:

答案 0 :(得分:0)

Code Map可能会做你想要的。正如文章所说,它可以帮助你

  
      
  • 了解.NET应用程序的整体架构。
  •   
  • 通过逐步深入细节,分析该架构中浮现的依赖关系。
  •   
  • 通过构建特定代码元素的依赖关系图,了解并分析建议的更改对代码的影响。
  •   

Call Hierarchy也可能有所帮助。正如文章所说

  

调用层次结构使您可以通过显示所选方法,属性或构造函数的所有调用来浏览代码。这使您可以更好地了解代码的流动方式并评估代码更改的效果。您可以检查多个级别的代码,以查看方法调用的复杂链和代码的其他入口点,这使您可以探索所有可能的执行路径。

此外,您可以随时调试并逐步执行代码以查看它在不同情况下的作用,然后查看调用堆栈等以跟踪您的调用和变量。