一句话:提出TraceMOP,通过显式跟踪运行时监控轨迹,降低Java运行时验证开销并辅助调试flaky违规。
运行时验证(RV)在程序执行时监控事件轨迹是否违反形式规约,但现有工具常在测试中重复监控大量相同轨迹,导致开销浪费,且发现的违规往往具有flaky特性。TraceMOP面向Java提出显式轨迹运行时验证:在逐个事件监控的同时显式记录和维护受监控轨迹,从而支持轨迹去重、复用与flaky违规调试。论文介绍了其设计、实现以及Maven插件和GitHub Actions集成,并在105个开源项目上评估。结果显示TraceMOP保留了成熟RV工具的监控功能,相比此前原型最高快11倍,并最多节省231.7GB内存;作者还用其调试了四个flaky违规。工具已开源并提供演示。
We present TraceMOP, an explicit-trace runtime verification (RV) tool. RV monitors if execution traces—sequences of events, e.g., method calls—violate formal specifications. TraceMOP monitors each event as it occurs, but unlike prior RV tools, it also tracks monitored traces explicitly. So, TraceMOP can help researchers address several challenges of using RV in testing, e.g., (i) RV overhead is mostly wasted: 99.87% of monitored traces are duplicates of the other 0.13%; and (ii) RV violations are often flaky. We describe TraceMOP's design, implementation and use via a Maven plugin and GitHub Actions. We evaluate TraceMOP on 105 open-source projects. TraceMOP preserves the monitoring functions of a mature RV tool; it is up to 11x faster and uses up to 231.7GB less memory than our previous prototype. We use TraceMOP to debug four flaky violations; it is open sourced (https://github.com/SoftEngResearch/tracemop) and a demo is at https://tracemop.gkevin.com/demo.