How should compilers explain problems to developers?

How should compilers explain problems to developers?
复制标题

DOI:
10.1145/3236024.3236040
复制
发表时间:
2018-10
期刊:
Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
影响因子:
--
通讯作者:
Titus Barik;Denae Ford;E. Murphy-Hill;Chris Parnin
Titus Barik;Denae Ford;E. Murphy-Hill;Chris Parnin
中科院分区:
其他
文献类型:
--
作者:
Titus Barik;Denae Ford;E. Murphy-Hill;Chris Parnin

文献摘要

被引文献

相似文献

编译器主要通过使用错误消息向开发人员提供有关问题的反馈。不幸的是,开发人员通常会发现这些信息令人困惑和无益。在本文中,我们推测,由于错误消息的解释不佳,因此可以应用解释的理论,例如Toulmin的论点模型 - 可以应用于提高其质量。为了了解编译器应如何向开发人员提供解释,我们对68位专业软件开发人员进行了比较评估,以及对二种不同编程语言中堆栈溢出问题中发现的编译器错误消息的经验研究。我们的发现表明,鉴于一对错误消息,开发人员非常喜欢错误消息,该错误消息在没有提供分辨率的情况下使用不足的参数结构而不是不足的参数结构 - 但是,如果它提供了解决问题的解决方案,则会接受不足的参数结构。堆栈溢出上的人为撰写的解释会融合到三个参数结构之一:那些可以解决错误,简单的论点和扩展论证的解决方案,这些论点为问题提供了其他证据。最后,我们贡献了三个实用的设计原则,以告知编译器错误消息的设计和评估。
Compilers primarily give feedback about problems to developers through the use of error messages. Unfortunately, developers routinely find these messages to be confusing and unhelpful. In this paper, we postulate that because error messages present poor explanations, theories of explanation---such as Toulmin's model of argument---can be applied to improve their quality. To understand how compilers should present explanations to developers, we conducted a comparative evaluation with 68 professional software developers and an empirical study of compiler error messages found in Stack Overflow questions across seven different programming languages. Our findings suggest that, given a pair of error messages, developers significantly prefer the error message that employs proper argument structure over a deficient argument structure when neither offers a resolution---but will accept a deficient argument structure if it provides a resolution to the problem. Human-authored explanations on Stack Overflow converge to one of the three argument structures: those that provide a resolution to the error, simple arguments, and extended arguments that provide additional evidence for the problem. Finally, we contribute three practical design principles to inform the design and evaluation of compiler error messages.