【问题标题】:Is there a way to list all classes that uses changed methods recursively?有没有办法以递归方式列出所有使用更改方法的类?
【发布时间】:2020-08-02 23:26:40
【问题描述】:

我想知道有没有办法列出所有使用更改方法的类(在将更改合并到 master 之后)?最好是递归的,所以如果我得到的类使用使用更改方法的方法,它将被列出。问题是针对 C# 的,但如果有通用工具可以做到这一点,那就没问题了。 问题是检查最近的提交是否不会在项目中进行回归

例如。

class one
{
    int something()
    {
        //method that changes
    }
}

class two
{
    int doSomethingWithSomething()
    {
        one objectoOfOne = new one();
        return objectoOfOne.something() + 1;
    }
}

class three
{
    int usingTwoWithSomething()
    {
        two objectOfTwo = new two();
        return objectOfTwo.doSomethingWithSomething() +2;
    }
}

class four
{
    int independent;
}

当在合并的更改方法中某物()被修改时,我想列出一、二、三类。

【问题讨论】:

  • 合并是什么意思?Git??
  • 是的,在Git中合并变更后,也可以在合并前
  • 要检查您是否有回归问题,您应该创建单元/集成测试,而不是尝试查找所有用法。无论如何,这个问题 - 我不知道这样的方式。
  • @byRadzio az Avaid 说我不认为你应该编写测试。或者使用反射检查程序并在更改时将类存储在某处的方法通知你
  • 我认为 OP 的问题是有效的,因为他想记录他的软件中受最近更改影响的所有区域,我们称之为 impact analysis。查看NDepend

标签: c# merge regression commit difference


【解决方案1】:

像 git 这样的源代码控制工具无法理解它存储的内容,除非数据是文本或二进制数据。这包括合并工具,大多数只看到文本已被插入、删除和(也许)重新组织。

为了提供更好的合并体验,有些工具实际上会解析源代码。有关示例,请参阅Semantic merge。他们知道哪些方法和类已更改。如果您知道类已更改,那么如果您愿意,也应该可以列出所有依赖类。如果你想将它连接到其他系统,我不知道这样的工具是否真的有一个 API。

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 2016-07-31
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2020-04-23
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多