  Machine learning models are widely used but can also often be wrong. Users
would benefit from a reliable indication of whether a given output from a given
model should be trusted, so a rational decision can be made whether to use the
output or not. For example, outputs can be associated with a confidence
measure; if this confidence measure is strongly associated with likelihood of
correctness, then the model is said to be well-calibrated. In this case, for
example, high-confidence outputs could be safely accepted, and low-confidence
outputs rejected.
  Calibration has so far been studied in mostly non-generative (e.g.,
classification) settings, especially in Software Engineering. However,
generated code can quite often be wrong: Developers need to know when they
should e.g., directly use, use after careful review, or discard model-generated
code; thus Calibration is vital in generative settings. However, the notion of
correctness of generated code is non-trivial, and thus so is Calibration. In
this paper we make several contributions. We develop a framework for evaluating
the Calibration of code-generating models. We consider several tasks,
correctness criteria, datasets, and approaches, and find that by and large
generative code models are not well-calibrated out of the box. We then show how
Calibration can be improved, using standard methods such as Platt scaling. Our
contributions will lead to better-calibrated decision-making in the current use
of code generated by language models, and offers a framework for future
research to further improve calibration methods for generative models in
Software Engineering.
