Javanni: A Verifier for JavaScript

  • Martin Nordio
  • Cristiano Calcagno
  • Carlo Alberto Furia
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7793)

Abstract

JavaScript ranks among the most popular programming languages for the web, yet its highly dynamic type system and occasionally unintuitive semantics make programming particularly error-prone. This paper presents Javanni, a verifier for JavaScript programs that can statically detect many common programming errors. Javanni checks the absence of standard type-related errors (such as accessing undefined fields) without requiring user-written annotations, and it can also verify full functional-correctness specifications. Several experiments with JavaScript applications reported in the paper demonstrate that Javanni is flexibly usable on programs with non-trivial specifications. Javanni is available online within the CloudStudio web integrated environment.

References

  1. 1.
    Anderson, C., Giannini, P., Drossopoulou, S.: Towards Type Inference for JavaScript. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 428–452. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  2. 2.
    Gardner, P., Maffeis, S., Smith, G.D.: Towards a program logic for javascript. In: POPL, pp. 31–44 (2012)Google Scholar
  3. 3.
    Jensen, S.H., Møller, A., Thiemann, P.: Type Analysis for JavaScript. In: Palsberg, J., Su, Z. (eds.) SAS 2009. LNCS, vol. 5673, pp. 238–255. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  4. 4.
    Leino, K.R.M.: This is Boogie 2. Technical report, Microsoft Research (2008)Google Scholar
  5. 5.
    Nordio, M., et al.: Collaborative software development on the web, arXiv:1105.0768v3 (2011)Google Scholar
  6. 6.
    Tschannen, J., Furia, C.A., Nordio, M., Meyer, B.: Usable Verification of Object-Oriented Programs by Combining Static and Dynamic Techniques. In: Barthe, G., Pardo, A., Schneider, G. (eds.) SEFM 2011. LNCS, vol. 7041, pp. 382–398. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  7. 7.
    Tschannen, J., Furia, C.A., Nordio, M., Meyer, B.: Verifying Eiffel programs with Boogie. In: BOOGIE Workshop (2011), http://arxiv.org/abs/1106.4700

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Martin Nordio
    • 1
  • Cristiano Calcagno
    • 2
  • Carlo Alberto Furia
    • 1
  1. 1.Chair of Software EngineeringETH ZurichSwitzerland
  2. 2.Imperial College London and Monoidics Ltd.ETH ZurichSwitzerland

Personalised recommendations