  Deep learning has been widely adopted to tackle various code-based tasks by
building deep code models based on a large amount of code snippets. While these
deep code models have achieved great success, even state-of-the-art models
suffer from noise present in inputs leading to erroneous predictions. While it
is possible to enhance models through retraining/fine-tuning, this is not a
once-and-for-all approach and incurs significant overhead. In particular, these
techniques cannot on-the-fly improve performance of (deployed) models. There
are currently some techniques for input denoising in other domains (such as
image processing), but since code input is discrete and must strictly abide by
complex syntactic and semantic constraints, input denoising techniques in other
fields are almost not applicable. In this work, we propose the first input
denoising technique (i.e., CodeDenoise) for deep code models. Its key idea is
to localize noisy identifiers in (likely) mispredicted inputs, and denoise such
inputs by cleansing the located identifiers. It does not need to retrain or
reconstruct the model, but only needs to cleanse inputs on-the-fly to improve
performance. Our experiments on 18 deep code models (i.e., three pre-trained
models with six code-based datasets) demonstrate the effectiveness and
efficiency of CodeDenoise. For example, on average, CodeDenoise successfully
denoises 21.91% of mispredicted inputs and improves the original models by
2.04% in terms of the model accuracy across all the subjects in an average of
0.48 second spent on each input, substantially outperforming the widely-used
fine-tuning strategy.
