Towards a program logic for JavaScript
Towards a program logic for JavaScript
复制标题
DOI:
10.1145/2103656.2103663
复制
发表时间:
2012-01
期刊:
影响因子:
--
通讯作者:
Philippa Gardner;S. Maffeis;Gareth Smith
中科院分区:
文献类型:
--
作者:
Philippa Gardner;S. Maffeis;Gareth Smith
JavaScript has become the most widely used language for client-side web programming. The dynamic nature of JavaScript makes understanding its code notoriously difficult, leading to buggy programs and a lack of adequate static-analysis tools. We believe that logical reasoning has much to offer JavaScript: a simple description of program behaviour, a clear understanding of module boundaries, and the ability to verify security contracts. We introduce a program logic for reasoning about a broad subset of JavaScript, including challenging features such as prototype inheritance and "with". We adapt ideas from separation logic to provide tractable reasoning about JavaScript code: reasoning about easy programs is easy; reasoning about hard programs is possible. We prove a strong soundness result. All libraries written in our subset and proved correct with respect to their specifications will be well-behaved, even when called by arbitrary JavaScript code.