【问题标题】:Teach emacs recognize Boost.Test errors教 emacs 识别 Boost.Test 错误
【发布时间】:2009-06-18 07:59:36
【问题描述】:

这是测试用例失败时 Boost.Test 的输出:

bjam 工具集=msvc ...耐心... ...找到 1287 个目标... ...更新 4 个目标... 编译-c-c++ ..\bin\test\Function.test\msvc-8.0\debug\link-static\threading-multi\Function.obj 函数.cpp msvc.link ..\bin\test\Function.test\msvc-8.0\debug\link-static\threading-multi\Function.exe msvc.manifest ..\bin\test\Function.test\msvc-8.0\debug\link-static\threading-multi\Function.exe testing.capture-output ..\bin\test\Function.test\msvc-8.0\debug\link-static\threading-multi\Function.run ====== 开始输出 ====== 运行 1 个测试用例... Function.cpp(26): "FunctionConstruction" 中的致命错误: 关键检查 pf->Name() == "F13" failed [F1 != F13] *** 在测试套件“foo_test”中检测到 1 个故障 检测到内存泄漏! 倾倒对象 -> {235} 0x003A7C88 处的普通块,32 字节长。 数据:00 00 00 00 CD CD CD CD 54 31 00 CD CD CD CD CD {234} 0x003A7E00 处的普通块,96 字节长。 数据:00 00 00 00 CD CD CD CD 54 31 00 CD CD CD CD CD {233} 0x003A7D88 处的普通块,76 字节长。 数据:F4 D9 45 00 00 00 00 00 CD CD CD CD 00 7E 3A 00 对象转储完成。 退出状态:201 ====== 结束输出 ======

MSVC 可以正确解析此错误,因此我可以双击并跳转到代码中。但是 emacs 无法解析这个输出。怎么教?

【问题讨论】:

    标签: unit-testing emacs boost


    【解决方案1】:

    解决方案将涉及自定义变量:'compilation-error-regexp-alist'compilation-error-regexp-alist-alist'compilation-directory-matcher

    第一个,'compilation-error-regexp-alist 只是一个符号列表,告诉编译模式在第二个变量“compilation-error-regexp-alist-alist”中查找什么,所以你可能只是添加一些东西来提升:

    (add-to-list 'compilation-error-regexp-alist 'boost)
    

    然后,要使其工作,您需要向第二个变量'compilation-error-regexp-alist-alist 添加一个列表。这是它开始变得棘手的地方。您需要阅读第一个变量的文档才能正确使用正则表达式,但它会是这样的:

    (add-to-list 'compilation-error-regexp-alist-alist
             '(boost
               "^\\(.*\\)(\\([0-9]+\\)): fatal error in" 1 2))
    

    正则表达式匹配错误行,1 和 2 指定子表达式,分别指定文件名和行号。您还可以指定其他内容(请参阅文档)。

    不过,老实说,以上两个设置可能是不必要的,因为我很确定现有的正则表达式之一将匹配格式。目录跟踪确实存在问题。

    最后一个变量,`'compilation-directory-matcher' 是让下一个错误跟踪在哪里找到文件的变量。所以需要适当更新。它看起来不像 boost 测试吐出 Emacs 寻找的有点标准的“进入目录......”,但信息似乎在编译行中......

    您也可以尝试在 boost 用户邮件列表中询问是否有人解决了这个问题。邮件列表可以在here找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2017-11-08
      • 2018-07-02
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多