• DocumentCode
    1605948
  • Title

    TypeDevil: Dynamic Type Inconsistency Analysis for JavaScript

  • Author

    Pradel, Michael ; Schuh, Parker ; Sen, Koushik

  • Volume
    1
  • fYear
    2015
  • Firstpage
    314
  • Lastpage
    324
  • Abstract
    Dynamic languages, such as JavaScript, give programmers the freedom to ignore types, and enable them to write concise code in short time. Despite this freedom, many programs follow implicit type rules, for example, that a function has a particular signature or that a property has a particular type. Violations of such implicit type rules often correlate with problems in the program. This paper presents Type Devil, a mostly dynamic analysis that warns developers about inconsistent types. The key idea is to assign a set of observed types to each variable, property, and function, to merge types based in their structure, and to warn developers about variables, properties, and functions that have inconsistent types. To deal with the pervasiveness of polymorphic behavior in real-world JavaScript programs, we present a set of techniques to remove spurious warnings and to merge related warnings. Applying Type Devil to widely used benchmark suites and real-world web applications reveals 15 problematic type inconsistencies, including correctness problems, performance problems, and dangerous coding practices.
  • Keywords
    Java; JavaScript; TypeDevil; dynamic language; dynamic type inconsistency analysis; polymorphic behavior pervasiveness; Arrays; Benchmark testing; Computer crashes; Instruments; Performance analysis; Receivers; Runtime; Dynamic languages; JavaScript; dynamic analysis; program analysis; types;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Software Engineering (ICSE), 2015 IEEE/ACM 37th IEEE International Conference on
  • Conference_Location
    Florence
  • Type

    conf

  • DOI
    10.1109/ICSE.2015.51
  • Filename
    7194584