这篇文章上次修改于 563 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

在Visual Studio 2019中,为了使输出信息更加直观,可安装 VSColorOutput 插件,但在编译工程时发现,本应是提示型输出却错误渲染成了红色。

如下图所示,红色部分输出为基本的提示型输出,并非发生错误:
error.png

通过了解插件的运行机制,明白其通过正则表达式判断输出信息的类型。很明显,错误标记的原因是正则表达式将该行输出错误失败为了ERROR类型。
使用在线.NET正则工具测试,发现是插件内置的第6项正则表达式导致:故直接修改,在匹配error前需要包含非字符(\W),避免匹配 EnumInterpreterError 这种形式即可。
solution.png


附:
输出语句

3>C:\Program Files (x86)\oatpp\include\oatpp-1.2.5\oatpp\oatpp\core\data\mapping\type\./Enum.hpp(535): message : 在编译 类 模板 成员函数“oatpp::data::mapping::type::Void oatpp::data::mapping::type::EnumInterpreterAsNumber<T,false>::fromInterpretation(const oatpp::data::mapping::type::Void &,oatpp::data::mapping::type::EnumInterpreterError &)”时

正则表达式:

(\W|^)^(?!.*warning\s(BC|CS|CA)\d+:).*(error|fail|failed|exception)[^\w\.\-\+]"

修改后:

(\W|^)^(?!.*warning\s(BC|CS|CA)\d+:).*\W(error|fail|failed|exception)[^\w\.\-\+]