<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Model for Automated Evaluation of Com ments to Aid Software Maintenance</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Debjyoti Paul</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bitan Biswas</string-name>
          <email>bitanbiswas99@gmail.com</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Rudrani Paul</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="editor">
          <string-name>Transformers, GPT-2, BERT, Automatic Software Maintenance</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Data Scientist (Amazon)</institution>
          ,
          <addr-line>Independent Researcher</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Software Engineer(TCS)</institution>
          ,
          <addr-line>Independent Researcher</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Student at St. Xavier's College</institution>
          ,
          <addr-line>Kolkata</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2022</year>
      </pub-date>
      <fpage>9</fpage>
      <lpage>13</lpage>
      <abstract>
        <p>With the increasing number of software applications, evaluating code repositories is of paradigm importance for building elegant software systems. The quality of a code repository is dependent on the readability of the code and the easiness with which it can be understood by other developers. Code commenting is a key requirement to ensure that code is readable, reusable, and reproducible. While useful comments can help software developers write better software, irrelevant and ambiguous comments can be overwhelming and misguiding to developers. Automatic software maintenance can help evaluate code repository and associated comments to provide meaningful insight into code quality and also help improve code comprehension by flagging not useful comments and highlighting useful ones. This paper explores the task of identifying code comment usefulness using a pre-trained transformer-based language The paper tries to understand how pre-trained language models like BERT and GPT-2 trained on large text corpora including code repositories can help understand comment usefulness. Such a model can help identify the comment usefulness with a minimum requirement of feature engineering and thus be integrated into an automatic software maintenance system to generalize across code repositories. The proposed model achieves an F1-score 90.15% and accuracy of 91.21% in the test set with 90.12% precision and 90.47% recall. The paper also explores explainable AI techniques like LIME and Attention visualizer to understand how these transformer-based models are identifying comment usefulness and establishing a sense of trust for these black box language models to be used in building automated software maintenance technologies.</p>
      </abstract>
      <kwd-group>
        <kwd>Evaluation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>(R. Paul)</p>
      <p>https://github.com/dpaul0501/irse_codebert (D. Paul)</p>
    </sec>
    <sec id="sec-2">
      <title>1. Introduction</title>
      <p>Code comments should be such that developers need minimal additional context information
to understand the code block or line the comment is referring to. Additional pointers can
always be given informs of links/documents but too many hinder the flow of code readability.
Useful comments are usually to the point and unambiguous in nature explaining the expected
input and output of the line of codes for which the comment has been made. Comments which
are ambiguous and irrelevant or too short are rendered not useful by developers. Not useful
comments lead to poor software engineering experience and increase the time spent on code
maintenance by many folds and a developer has to understand the code flow by repeated testing
and writing customized unit tests. Such steps increase the time and efort spent on a given task.</p>
      <p>Software development and maintenance tasks are one of the important and growing needs
across the globe. A large chunk of a software developer’s time is spent on improving and
maintenance of existing code repositories. Often the person maintaining or performing bug fixes
is not the same person who wrote the code in the first place. The process of code commenting is
hence quite important to improve the readability of the code. Useful and to-the-point comments
help maintenance tasks like feature addition and bug fixes easy as developers readily understand
the code functionality and spend more time on designing the maintenance process.</p>
      <p>With the improvement of predictive modeling techniques, automated systems can be made to
perform diferent software maintenance tasks like code quality and comment quality monitoring.
Recommending better code design or commenting can help augment software developers for
better software maintenance.</p>
      <p>
        To help promote research in the area of automated software maintenance using state of
art language technology and information retrieval methods, FIRE 2022, December 9-13, 2022,
Kolkata, India[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] has organized a binary classification task to classify source code
comments as Useful or Not Useful for a given comment and associated code as input.
      </p>
      <p>The complexity of software design lies in that software can be developed in various coding
languages and platforms which have diferent syntactic styles leading to heterogeneous software
design. Hand-engineered features while being straightforward and more intuitive, might not
generalize well across variable coding languages and design as they might not capture the full
complexity of features required. Since the software best practices and design principles are
uniform everywhere, it is intended that the predictive model is designed in such a way that it
has contextual information. Pre-trained large language models being trained on diverse corpora
especially those trained on bimodal data of both natural language and programming language
can generate more generalized feature vectors. But such language models are black boxes in
nature and the explainability of the model is lost. In this research study, we attempt to find a
solution for the same. The novel contributions made by this paper are the following.
1. Leveraging transformer-based architecture for building code usefulness predictive model
without hand-engineered features
2. using explainable AI techniques to probe into the model for gaining insight into what
constitutes a useful or not useful comment to instill a sense of trust in the modeling
approach.</p>
    </sec>
    <sec id="sec-3">
      <title>2. Related Studies</title>
      <p>
        Application of machine learning techniques to automate and improve diferent software
engineering tasks like source code analysis, software testing, coverage, and vulnerability analysis has
been an active area of research [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Numerous researchers have applied predictive techniques
to understand code quality. The quality of code depends on the readability and comprehension
aspects and code comments play an intricate role in that. Since documentation and code share
similar vocabulary, NLP and text-based models can be used for analysis and for automated
software maintenance [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] explore use of machine learning and text-based
techniques for code comment usefulness prediction. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] has performed in-depth feature analysis to
understand what constitutes useful code comments and insights into irrelevant and inconsistent
comments. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] has also proposed a knowledge graph-based approach to represent finite code
ontologies and correlate with the natural language and programming language mix vocabulary
in code comments. Features like comment length, and number of code-related terms as
compared to stop words are important markers of useful comments. Besides code comments, code
reviews are an integral part of software development. [] explores the usage of NLP techniques
for enforcing consistent use of identifiers.
      </p>
      <p>
        Code reviews can help enforcement of software design best practices. To reduce the burden
on human software developers to perform code reviews, automated software can be developed
to perform code reviews as explored by [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] explores the usage of language models for
placement and log description in the code for uniform and meaningful log statements generated.
      </p>
      <p>
        With the advancement of generative language model for text generation task, researchers
have also explored the scope of code generation [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ][
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] . Such models can be
useful for code-recommendation and completion tasks and guide developers to adhere to good
programming principles. Text summarization techniques have been explored by [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] for efective
documentation of source code.
      </p>
    </sec>
    <sec id="sec-4">
      <title>3. Method</title>
      <p>The main research question that is explored by this paper is if pre-trained language model based
on transformer architecture can be fine-tuned for automatic evaluation of usefulness of code
comment. The motivation of this research question comes from the fact that these pre-trained
language model doesn’t need explicit feature engineering and can generate contextual feature
embedding for text across various domains. A basic exploration of the data reveals that the not
useful comments are mostly around comments which doesn’t contain any relevant information
- like use of symbols to demarcate code blocks,. Fig1 shows the top common words associated
with useful and not usefull class. Fig:2 shows the class distribution are almost balanced.</p>
      <sec id="sec-4-1">
        <title>3.1. Modeling Approach</title>
        <p>The code comment classification task consists of a unique challenge. The usefulness of code
comments depends on the context of the code. While there is overlap between natural language
(NL) and programming language (PL), there is syntactic diference in how they are used. Also,
PL is a structured and finite vocabulary language as compared to NL which is unstructured.
(a) Not Useful class
(b) Useful class
Code comments contain a mix of PL and NL vocabulary and hence lead to complications of
word sense disambiguation and understanding the contextual information.</p>
        <p>
          In recent years, transformer [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]-based model has achieved a remarkable benchmark in NLP
and text-related tasks as compared to RNN/LSTM [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]-based model. Pre-trained large language
models based on this transformer architecture, (trained on large text corpus and have a large
number of parameters, often in billions ) have gained popularity as these models have been able
to generalize across multiple downstream tasks in both classification and generation. Word
and Sentence embedding technologies [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ][
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] have been at the forefront to solve NLP and
text-related machine learning tasks as such techniques don’t require explicit hand engineering of
features. Such embeddings can be also fine-tuned for task-specific applications. The pre-trained
transformer-based models leverage multi-head attention architecture to embed knowledge from
large training corpora and embed knowledge using some pre-training tasks. This leads to the
generation of superior embedding. This is evident from the benchmark achieved by these
models. There are primarily two types of such pre-trained language models - autoencoding
and autoregressive. BERT [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] is a bidirectional autoencoding based transformer model. Bert
uses the encoder architecture of a transformer and consists of 12 Transformer encoding blocks
with 12 self-attention heads and an embedding size of 768. BERT accepts a maximum of 512
tokens as input and accepts two special tokens [CLS] and [SEP]. [CLS] token is used to mark
the beginning of the input token while [SEP] is used as a demarcating sentence boundary. For
text classification tasks, BERT final hidden embedding of [CLS] token can be used as hidden
representation and a classification layer on top of it can be used.
        </p>
        <p>(|ℎ) =  ( , ℎ)
(1)
where W is the task-specific parameter matrix for the classification layer. The full set of Bert
parameters are finetuned as part of the training process.</p>
        <p>
          CodeBERT [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] is a language model based on Transformer based architecture that is trained
on bimodal data of NL and PL. CodeBERT attempts to learn and bridge the gap between language
models for downstream tasks which contain both NL and PL tasks. This model is quite suitable
for this application to understand the usefulness of code comments and can be also used to do
automated code reviews or comment suggestions. CodeBert is based on Roberta [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] architecture
which is an optimized and improved training to the vanilla Bert model. Roberta improves over
Bert-base training by introducing CC-News dataset and removing the next sentence prediction
task. It also tries to improve performance of Bert by training over longer sequences and larger
batch sizes and dynamic masking.
        </p>
        <p>
          GPT-2 [23] is an autoregressive generative model introduced by Open-AI. Unlike BERT, GPT-2
is built using the decoder architecture of the transformer. GPT-2 is trained on WebText corpus
which consists of curated webpages from Reddit. Several studies [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] [24] has proposed
using GPT-2 for code generation task as well. Given Reddit contains lots of programming blogs,
it might be a source of why GPT-2 has performed well on these tasks in the intersection of
natural language and programming language.
        </p>
        <p>The goal of this paper is to leverage these pre-trained language models described above for
the task of code comment usefulness classification. Our assumption is that these language model
being trained on large and diverse corpus possesses the context required for understanding
the relationship between code and comment. Hence these models can be directly applied to
obtain rich feature embedding without explicit engineering. We treat the Bert-base model as
a baseline, as it is mainly trained on NL vocabulary. Models like codeBert and GPT-2 having
the context of both NL and PL can directly embed the relation between code and associated
comment. This will make the modeling approach agnostic of a software system and coding
language or platform. Given any code and comment, along with fine-tuning data, the modeling
approach can adapt to the application.</p>
      </sec>
      <sec id="sec-4-2">
        <title>3.2. Training Data Input Format</title>
        <p>Each input sample consists of two feature strings: &lt;Code string&gt; - representing the code and
&lt;Comment text&gt; which is the associated comment. For Bert based model we provide the input
to the model in the format [CLS] &lt;Comment text&gt; [SEP] &lt;Code string&gt;. For GPT2 model the
input format used is Comment: &lt;Comment text&gt; Code: &lt;Code string&gt;</p>
        <p>Models are trained on training data and we do hyperparameter tuning on validation data for
learning rate, batch size, and optimization technique. We have used AdamW as the optimization
technique, with a learning rate of 10−5, and a batch size of 20 for the final model. We have
reported the model performance on the test dataset provided as a part of the IRSE track. The
code for all the proposed model and vizualizations are available through this text link</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>4. Results</title>
      <p>The following table shows the comparison of the transformer-based models for code comment
usefulness classification. Finetuned Code-Bert model performs slightly better when compared
with Finetuned GPT-2. Both Code-Bert and GPT-2 perform significantly better than the
BertBase model. Overall transformer-based architecture generalizes quite well. Using Code-Bert
(Roberta) based model improves performances over Bert-base and it beats the performance
achieved by GPT-2. Code-Bert model is explicitly pre-trained on both NL and PL and hence
this improvement of the baseline is expected. Both Code-Bert and GPT-2 model outperforms
the performance of Precision and Recall scores of For all the model we have used AdamW [25]
optimizer, and cross entropy loss with Xavier initialization [? ]. The classification layer is built
on top of the top of average sentence vector as obtained from the final layer of transformer. The
other parameters of the model are kept to as the standard configuration of each of the model
used.</p>
      <sec id="sec-5-1">
        <title>Model Precision BERT-Base 84.23% RoBERTa-Code-bert 90.12% GPT-2 88.86%</title>
      </sec>
      <sec id="sec-5-2">
        <title>Recall 84.19% 90.47% 88.73%</title>
      </sec>
      <sec id="sec-5-3">
        <title>F1-Score 83.31% 90.15% 88.69%</title>
      </sec>
      <sec id="sec-5-4">
        <title>Accuracy 84.16% 91.21% 91.15%</title>
        <p>While the transformer-based model doesn’t require explicit feature engineering, given they are
trained on a large corpus and the pre-training mechanism leads to the learning of generalized
embedding, these models do lack explainability. When dealing with applications like software
maintenance, model accuracy is not the only paradigm requirement. One might also need
to understand why certain comments are deemed as not useful and what leads to useful
commenting. One might also look at the task of generating code comments given codes. Existing
explainable AI techniques like LIME [26], SHAP [27] and transformer attention visualization
[28] [29] can be leveraged to probe into such black box models and understand what kind of
features the model is learning to achieve the classification task.</p>
        <p>By studying the features learned by the transformer model one can also draw a parallel with
the hand-engineered features-based model and generate a sense of trust in the
transformerbased model’s performance. We investigate the feature learned by the best performing model
Code-Bert. Our observations are similar when investigating the feature learned by GPT-2.</p>
        <p>We sampled from the training data Useful and Not Useful comments and observed applied
Lime text explainer. Fig:3 Fig:5 show the LIME interpretation for the model decision of useful
comment where the original label was also useful comment Fig:4Fig:6. For the 1st useful
comment Fig:4 sample coding construct like memchunk has been found relevance with allocation
and hence the model predicted the comment as useful comment. Similarly, for the 2nd useful
comment sample Fig:6 the coding ontology of beg: end is found to be related to length defined
(process length) which shows that the comment and the associated code are contextually
linked.</p>
        <p>Fig:7 Fig:9 show the LIME interpretation for the model decision of useful comment where
the original label was also useful comment 810. For the 1st not useful comment Fig:8 sample,
the comment was mostly dashed lines and hence the model predicted the comment as not
useful comment. Similarly for the 2nd not useful comment sample Fig:10 the coding term
N E W _ I T Y _ D R I V E R is directly copied in the comment. A developer reading the code for the first
time will have a dificult time understanding the purpose of the line of code from the such a
short comment.</p>
        <p>We also explored the attention visualization Fig:11 Fig:12 of intermediate BERT and
GPT2 layer. The token-token attention score can provide insight into features extracted by the
transformer-based models. For Useful comment 1 Fig:11 we found that attention score are
higher for words like allocation, initialize etc from comment text and memchunk, malloc from
code chunk. Lower attention is received by unrelated code line printf. For Useful comment 1
Fig:12 we found that the attention score is lower for dashed line-based comment which doesn’t
add any relevant meaning to the code associated.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>5. Conclusion</title>
      <p>With the ever increasing demand of building technology solutions, maintaining of existing
code bases is a surmounting challenge. Code commenting is an important step in any software
development. Adopting best practices for commenting code leads to improve readability and
comprehensiveness of the code . Since most of the time, a developer spend in maintaining
existing code - refactoring, feature addition or bug fixes, relevant and informative comments
can help improve productive of the programmer and better maintenance of code base. It can
also increase adoption of similar code bases and thus can lead to reduction of repetitive efort.
In this paper we have explored pre-trained language model for code usefulness classification.
We have also explored explainable techniques like LIME and attention vizualization to probe
into the model learned and understand what what are the insights for writing useful comments.
Our analysis shows the these pre-trained model are able to capture the context of comment and
correlate with the associated code. Having Programming language related data in pre-training
helps in better contextual representation of the code and comment and association of the
underlying vocabulary. In future research we would like to extend the model to new and more
extensively used programming language like C++, Java and Python. We will also explore the
application of model of comment suggestion given a code snippet.
[23] A. Radford, J. Wu, R. Child, D. Luan, D. Amodei, I. Sutskever, et al., Language models are
unsupervised multitask learners, OpenAI blog 1 (2019) 9.
[24] A. Svyatkovskiy, S. K. Deng, S. Fu, N. Sundaresan, Intellicode compose: Code generation
using transformer, in: Proceedings of the 28th ACM Joint Meeting on European Software
Engineering Conference and Symposium on the Foundations of Software Engineering,
2020, pp. 1433–1443.
[25] I. Loshchilov, F. Hutter, Decoupled weight decay regularization, arXiv preprint
arXiv:1711.05101 (2017).
[26] M. T. Ribeiro, S. Singh, C. Guestrin, ” why should i trust you?” explaining the predictions
of any classifier, in: Proceedings of the 22nd ACM SIGKDD international conference on
knowledge discovery and data mining, 2016, pp. 1135–1144.
[27] S. M. Lundberg, S.-I. Lee, A unified approach to interpreting model predictions, Advances
in neural information processing systems 30 (2017).
[28] J. Vig, Bertviz: A tool for visualizing multihead self-attention in the bert model, in: ICLR</p>
      <p>Workshop: Debugging Machine Learning Models, 2019.
[29] S. Abnar, W. Zuidema, Quantifying attention flow in transformers, arXiv preprint
arXiv:2005.00928 (2020).</p>
      <p>Figure 11: Attention Vizualization of Code-Bert Layer-3 for Useful Comment Sample 1
Figure 12: Attention Vizualization of Code-Bert Layer-3 for Not Useful Comment Sample 1</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bandyopadhyay</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. P. Das</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. D Clough</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Chattopadhyay</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Majumder</surname>
          </string-name>
          ,
          <article-title>Overview of the IRSE subtrack at FIRE 2022: Information Retreival in Software Engineering</article-title>
          , in: Working Notes of FIRE 2022 -
          <article-title>Forum for Information Retrieval Evaluation</article-title>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          ,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bandyopadhyay</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. P. Das</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. D Clough</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Chattopadhyay</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Majumder</surname>
          </string-name>
          ,
          <article-title>Overview of the IRSE track at FIRE 2022: Information Retrieval in Software Engineering, in: Forum for Information Retrieval Evaluation</article-title>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          ,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Papdeja</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. P. Das</surname>
            ,
            <given-names>S. K.</given-names>
          </string-name>
          <string-name>
            <surname>Ghosh</surname>
          </string-name>
          ,
          <article-title>Comment-mine-a semantic search approach to program comprehension from code comments</article-title>
          ,
          <source>in: Advanced Computing and Systems for Security</source>
          , Springer,
          <year>2020</year>
          , pp.
          <fpage>29</fpage>
          -
          <lpage>42</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>T.</given-names>
            <surname>Sharma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kechagia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Georgiou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Tiwari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Sarro</surname>
          </string-name>
          ,
          <article-title>A survey on machine learning techniques for source code analysis</article-title>
          ,
          <source>arXiv preprint arXiv:2110.09610</source>
          (
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>N.</given-names>
            <surname>Khamis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Witte</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Rilling</surname>
          </string-name>
          ,
          <article-title>Automatic quality assessment of source code comments: the javadocminer</article-title>
          ,
          <source>in: International Conference on Application of Natural Language to Information Systems</source>
          , Springer,
          <year>2010</year>
          , pp.
          <fpage>68</fpage>
          -
          <lpage>79</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bansal</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. P. Das</surname>
            ,
            <given-names>P. D.</given-names>
          </string-name>
          <string-name>
            <surname>Clough</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Datta</surname>
            ,
            <given-names>S. K.</given-names>
          </string-name>
          <string-name>
            <surname>Ghosh</surname>
          </string-name>
          ,
          <article-title>Automated evaluation of comments to aid software maintenance</article-title>
          ,
          <source>Journal of Software: Evolution and Process</source>
          <volume>34</volume>
          (
          <year>2022</year>
          )
          <article-title>e2463</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>X.</given-names>
            <surname>Sun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Geng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Lo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Duan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <article-title>Code comment quality analysis and improvement recommendation: An automated approach</article-title>
          ,
          <source>International journal of software engineering and knowledge engineering 26</source>
          (
          <year>2016</year>
          )
          <fpage>981</fpage>
          -
          <lpage>1000</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S. K.</given-names>
            <surname>Kumar</surname>
          </string-name>
          ,
          <article-title>On weight initialization in deep neural networks</article-title>
          ,
          <source>arXiv preprint arXiv:1704.08863</source>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Arafat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Sumbul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Shamma</surname>
          </string-name>
          ,
          <article-title>Categorizing code review comments using machine learning</article-title>
          ,
          <source>in: Proceedings of Sixth International Congress on Information and Communication Technology</source>
          , Springer,
          <year>2022</year>
          , pp.
          <fpage>195</fpage>
          -
          <lpage>206</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Guo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Duan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jannu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Jenks</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Majumder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Green</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Svyatkovskiy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Fu</surname>
          </string-name>
          , et al.,
          <article-title>Codereviewer: Pre-training for automating code review activities</article-title>
          ,
          <source>arXiv preprint arXiv:2203.09095</source>
          (
          <year>2022</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gholamian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. A.</given-names>
            <surname>Ward</surname>
          </string-name>
          ,
          <article-title>Borrowing from similar code: A deep learning nlp-based approach for log statement automation</article-title>
          ,
          <source>arXiv preprint arXiv:2112.01259</source>
          (
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>L.</given-names>
            <surname>Perez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Ottens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Viswanathan</surname>
          </string-name>
          ,
          <article-title>Automatic code generation using pre-trained language models</article-title>
          ,
          <source>arXiv preprint arXiv:2102.10535</source>
          (
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>I.</given-names>
            <surname>Paik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.-W.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <article-title>Improving text-to-code generation with features of code graph on gpt-2</article-title>
          , Electronics 10 (
          <year>2021</year>
          )
          <fpage>2706</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>M.</given-names>
            <surname>Ciniselli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Cooper</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Pascarella</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Poshyvanyk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. Di</given-names>
            <surname>Penta</surname>
          </string-name>
          ,
          <string-name>
            <surname>G. Bavota,</surname>
          </string-name>
          <article-title>An empirical study on the usage of bert models for code completion</article-title>
          ,
          <source>in: 2021 IEEE/ACM 18th International Conference on Mining Software Repositories (MSR)</source>
          , IEEE,
          <year>2021</year>
          , pp.
          <fpage>108</fpage>
          -
          <lpage>119</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Feng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Guo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Tang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Duan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Feng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Shou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Qin</surname>
          </string-name>
          , T. Liu,
          <string-name>
            <given-names>D.</given-names>
            <surname>Jiang</surname>
          </string-name>
          , et al.,
          <article-title>Codebert: A pre-trained model for programming and natural languages</article-title>
          , arXiv preprint arXiv:
          <year>2002</year>
          .
          <volume>08155</volume>
          (
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Arthur</surname>
          </string-name>
          ,
          <article-title>Automatic source code documentation using code summarization technique of nlp</article-title>
          ,
          <source>Procedia Computer Science</source>
          <volume>171</volume>
          (
          <year>2020</year>
          )
          <fpage>2522</fpage>
          -
          <lpage>2531</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>A.</given-names>
            <surname>Vaswani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Shazeer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Parmar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Uszkoreit</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Jones</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. N.</given-names>
            <surname>Gomez</surname>
          </string-name>
          , Ł. Kaiser,
          <string-name>
            <surname>I. Polosukhin</surname>
          </string-name>
          ,
          <article-title>Attention is all you need</article-title>
          ,
          <source>Advances in neural information processing systems</source>
          <volume>30</volume>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hochreiter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Schmidhuber</surname>
          </string-name>
          ,
          <article-title>Long short-term memory</article-title>
          ,
          <source>Neural computation 9</source>
          (
          <year>1997</year>
          )
          <fpage>1735</fpage>
          -
          <lpage>1780</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>T.</given-names>
            <surname>Mikolov</surname>
          </string-name>
          , I. Sutskever,
          <string-name>
            <given-names>K.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. S.</given-names>
            <surname>Corrado</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dean</surname>
          </string-name>
          ,
          <article-title>Distributed representations of words and phrases and their compositionality</article-title>
          ,
          <source>Advances in neural information processing systems</source>
          <volume>26</volume>
          (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>J.</given-names>
            <surname>Pennington</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Socher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. D.</given-names>
            <surname>Manning</surname>
          </string-name>
          , Glove:
          <article-title>Global vectors for word representation</article-title>
          ,
          <source>in: Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP)</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>1532</fpage>
          -
          <lpage>1543</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>J.</given-names>
            <surname>Devlin</surname>
          </string-name>
          , M.-
          <string-name>
            <given-names>W.</given-names>
            <surname>Chang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Toutanova</surname>
          </string-name>
          , Bert:
          <article-title>Pre-training of deep bidirectional transformers for language understanding</article-title>
          , arXiv preprint arXiv:
          <year>1810</year>
          .
          <volume>04805</volume>
          (
          <year>2018</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ott</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Goyal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Du</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Joshi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Levy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Lewis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Zettlemoyer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Stoyanov</surname>
          </string-name>
          ,
          <article-title>Roberta: A robustly optimized bert pretraining approach</article-title>
          , arXiv preprint arXiv:
          <year>1907</year>
          .
          <volume>11692</volume>
          (
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>