我正在尝试编写一个errorformat来检测使用新的gradle构建系统(http://tools.android.com/tech-docs/new-build-system)编译android应用程序时的错误。
errorformat=%f:%l:\ error:\ %m
此错误格式捕获XML错误,但在gradle中,输出中的文件名不是原始源文件名,而是临时构建文件:
/home/user/Studio/myapp/build/res/all/debug/layout/add_child_dialog.xml:7: error: Error parsing XML: unbound prefix
原始源文件是:
/home/user/Studio/myapp/res/layout/add_child_dialog.xml:7: error: Error parsing XML: unbound prefix
正如您所看到的,错误显示了构建文件夹中的文件,并且其中包含构建类型( debug )。
我阅读了quickfix-window帮助,并找到了使用 QuickfixCmdPost 和 quickfix BufReadPost自动命令修改quickfix输出的方法,但这些方法在quickfix窗口之后生效由errorformat解析。结果我可以在quickfix窗口看到正确的源文件,但vim仍然跳转到错误的文件。
有没有办法在errorformat解析后修改文件(%f)? 有没有办法告诉gradle打印原始源文件而不是构建文件?
答案 0 :(得分:0)
您可以转换QuickFixCmdPost
上的quickfix列表(使用getqflist()
和setqflist()
,使用filename
属性中的正确文件),或者将脚本附加到{ {1}}转换输出(例如使用'makeprg'
)。
但我同意你的看法,工具输出错误并且应该修复(说明原始文件,而不是临时副本),而不是在Vim中解决这个问题。