有没有办法以递归方式列出所有使用更改方法的类?

Posted

技术标签:

【中文标题】有没有办法以递归方式列出所有使用更改方法的类?【英文标题】: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 【参考方案1】:

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

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

【讨论】:

以上是关于有没有办法以递归方式列出所有使用更改方法的类?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法以编程方式列出所有gradle依赖项?

在 Groovy 中递归列出与特定文件类型匹配的所有文件

在Unix中递归列出文件中的所有文件? [复制]

以编程方式递归列出eclipse工作区中的所有文件

有没有办法以编程方式请求许可?

有没有办法更改 Visual Studio 中 IntelliSense 中列出的构造函数的顺序?