如果源代码中存在问题,通常程序员会手动浏览日志并尝试在源代码中识别问题。
但是可以自动化这个过程吗?我们是否可以自动化过程,从而为源代码中的潜在行提供负责产生错误的能力。
所以,例如:
如果日志文件中存在问题。然后这个自动化工具应该说由于源代码 ABC
中的第30,31,32,35,38行已经发生了这个问题谢谢!
答案 0 :(得分:0)
假设我们不是在谈论(单元)测试,因为这就是他们所做的 - 告诉你究竟问题在哪里。
然后这个自动化工具应该说由于源代码ABC中的第30,31,32,35,38行已经发生了这个问题
在我的团队中,我们进行了类似的讨论,我们带来的是 Top5最可能的问题文档(PlayBook)。在每次失败时读取日志后,我们注意到在大多数情况下都存在需求模式。因此,在10个案例中,有8个问题是遵循其中一种模式。因此可以跟踪最新的更改(在Git的帮助下)。如果您的更改很小且频繁 - 这种方法效果很好。
答案 1 :(得分:0)
这取决于您使用的语言。
在Java(以及可能的其他JVM语言)中,此功能是内置的:抛出的每个异常都有对堆栈跟踪的引用,包括所涉及的每个方法的类,方法和行号。您需要做的就是
exception.printStackTrace();
在C和C ++中,您可以在抛出异常或编写日志消息时使用预处理器宏,如__FUNCTION__
或__LINE__
,例如:
throw "Error in " + __FUNCTION__ + ", line " + std::to_string(__LINE__);
宏将被当前函数和当前行替换。
如果您正在寻找适用于任何语言和任何类型的日志记录的方法,那么没有好的解决方案。您可以在所有源文件上运行grep
之类的工具,它会尝试查找匹配项。但是,这仅在日志消息在写入消息的位置的源代码中显示为字符串文字时才有效。这不太可能,因为消息可能包含在其他地方定义的变量值或常量。