Predicting Program Properties from 'Big Code'.

We present a new approach for predicting program properties from large codebases (aka "Big Code"). Our approach learns a probabilistic model from "Big Code" and uses this model to predict properties of new, unseen programs. The key idea of our work is to transform the program into a representation t...

Descripción completa

Detalles Bibliográficos
Publicado en:Communications of the ACM Vol. 62; no. 3; pp. 99 - 108
Autores principales: Raychev, Veselin, Vechev, Martin, Krause, Andreas
Formato: Artículo
Publicado: Association for Computing Machinery Mar2019
Materias:
Acceso en línea:Ver este registro en EBSCOhost
fields @attributes:
  recordID: 1
pdfLink:
plink: https://search.ebscohost.com/login.aspx?direct=true&db=hlh&AN=134951014&site=ehost-live
header:
  @attributes:
    shortDbName: hlh
    uiTerm: 134951014
    longDbName: Humanities International Complete
    uiTag: AN
  controlInfo:
    bkinfo:
    jinfo:
      jid:
        00010782
        ACM
      jtl: Communications of the ACM
      issn: 00010782
      maglogo: N
    pubinfo:
      dt: Mar2019
      vid: 62
      iid: 3
      pid: 68
      pub: Association for Computing Machinery
    artinfo:
      ui:
        134951014
        10.1145/3306204
      ppf: 99
      ppct: 9
      formats:
      tig:
        atl: Predicting Program Properties from 'Big Code'.
      aug:
        au:
          Raychev, Veselin
          Vechev, Martin
          Krause, Andreas
        affil: ETH Zurich, Zurich, Switzerland
      su:
        Computer programming
        Automation
        JavaScript programming language
        Machine learning
        Computer software
      sug:
        subj:
          Computer programming
          Automation
          JavaScript programming language
          Machine learning
          Computer software
      ab: We present a new approach for predicting program properties from large codebases (aka "Big Code"). Our approach learns a probabilistic model from "Big Code" and uses this model to predict properties of new, unseen programs. The key idea of our work is to transform the program into a representation that allows us to formulate the problem of inferring program properties as structured prediction in machine learning. This enables us to leverage powerful probabilistic models such as Conditional Random Fields (CRFs) and perform joint prediction of program properties. As an example of our approach, we built a scalable prediction engine called JSNice for solving two kinds of tasks in the context of JavaScript: predicting (syntactic) names of identifiers and predicting (semantic) type annotations of variables. Experimentally, JSNice predicts correct names for 63% of name identifiers and its type annotation predictions are correct in 81% of cases. Since its public release at http://jsnice.org, JSNice has become a popular system with hundreds of thousands of uses. By formulating the problem of inferring program properties as structured prediction, our work opens up the possibility for a range of new "Big Code" applications such as de-obfuscators, decompilers, invariant generators, and others.
      pubtype: Periodical
      doctype: Article
      src: R
    language: English
    refInfo:
    copyright:
      @attributes:
        flag: Y
      dt:
        @attributes:
          year: 2019
    holdings:
      @attributes:
        islocal: N