Inferring Pluggable Types with Machine Learning

Kazi Amanul Islam Siddiqui, Martin Kellogg
6/21/2024
cs.SEcs.AI

No confident code implementation found for this paper.

Abstract

Pluggable type systems allow programmers to extend the type system of a programming language to enforce semantic properties defined by the programmer. Pluggable type systems are difficult to deploy in legacy codebases because they require programmers to write type annotations manually. This paper investigates how to use machine learning to infer type qualifiers automatically. We propose a novel representation, NaP-AST, that encodes minimal dataflow hints for the effective inference of type qualifiers. We evaluate several model architectures for inferring type qualifiers, including Graph Transformer Network, Graph Convolutional Network and Large Language Model. We further validated these models by applying them to 12 open-source programs from a prior evaluation of the NullAway pluggable typechecker, lowering warnings in all but one unannotated project. We discovered that GTN shows the best performance, with a recall of .89 and precision of 0.6. Furthermore, we conduct a study to estimate the number of Java classes needed for good performance of the trained model. For our feasibility study, performance improved around 16k classes, and deteriorated due to overfitting around 22k classes.

View on arXivView PDF

Code Implementations

No confident code match yet

We couldn't find an author-owned or strongly-evidenced community implementation for this paper. Any repos shown below are weak matches — verify before relying on them.

No code implementations found yet.

Know of an implementation? Let us know in the comments below!

Similar Papers

Cite this paper

@article{siddiqui2024inferring,
  title  = {Inferring Pluggable Types with Machine Learning},
  author = {Kazi Amanul Islam Siddiqui and Martin Kellogg},
  year   = {2024},
  eprint = {2406.15676},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2406.15676v2}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2406.15676.svg)](https://codeofpaper.com/paper/2406.15676)

Discussion