<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">GiottoBugFixer: an effective and scalable easy-to-use framework for fixing software issues in a DevOps pipeline</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Placido</forename><surname>Pellegriti</surname></persName>
							<email>p.pellegriti@almaviva.it</email>
							<affiliation key="aff0">
								<orgName type="institution">AlmavivA S.p.A</orgName>
								<address>
									<addrLine>Via di Casal Boccone 188/190</addrLine>
									<postCode>00137</postCode>
									<settlement>Rome</settlement>
									<country key="IT">Italy</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Carmine</forename><surname>Cisca</surname></persName>
							<email>c.cisca@almaviva.it</email>
							<affiliation key="aff0">
								<orgName type="institution">AlmavivA S.p.A</orgName>
								<address>
									<addrLine>Via di Casal Boccone 188/190</addrLine>
									<postCode>00137</postCode>
									<settlement>Rome</settlement>
									<country key="IT">Italy</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Fabio</forename><surname>Previtali</surname></persName>
							<email>f.previtali@almaviva.it</email>
							<affiliation key="aff0">
								<orgName type="institution">AlmavivA S.p.A</orgName>
								<address>
									<addrLine>Via di Casal Boccone 188/190</addrLine>
									<postCode>00137</postCode>
									<settlement>Rome</settlement>
									<country key="IT">Italy</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">GiottoBugFixer: an effective and scalable easy-to-use framework for fixing software issues in a DevOps pipeline</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">C2E7C92DF4F7A5AD30113965EB7943D6</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T16:56+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Platform Engineering</term>
					<term>Software Automation</term>
					<term>Generative AI</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Developing software is one of the most important and crucial activity in the IT domain. It is an important, challenging and time consuming activity due to many factors that spaces from software complexity up to testing and deployment phases. In the past decades, a plethora of tools have been released for helping developers in coding faster, however they are now becoming ineffective and unable to keep up with the change affecting the IT development.</p><p>This paper investigates the potential of generative AI in the realm of software development, focusing on how these technologies can augment the coding process, from initial concept to final deployment. It begins by delineating the fundamental mechanisms through which generative AI models, such as code completions and automated code generation can enhance developer productivity, reduce error rates and streamline the software development lifecycle. We conducted an experimentation on several repositories obtaining around 25% of software issues automatically fixed with a 17x speed up.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>In the rapidly evolving field of software engineering, understanding the intricacies of the software development process is crucial for delivering high-quality, efficient and reliable software solutions. This paper delves into the comprehensive study of the software development lifecycle, focusing on pivotal aspects such as code quality, implementation and testing. By dissecting these elements, we aim to offer insights into optimizing the development process, ensuring that software not only meets but exceeds the rigorous demands of applications to be realized.</p><p>At the heart of any software project lies the quality of its code, which serves as the cornerstone for functionality, maintainability, and scalability. We explore methodologies and practices such as code reviews, static code analysis, and adherence to coding standards that contribute to enhancing code quality. By integrating these practices, developers can reduce bugs, facilitate easier updates, and ensure a robust foundation for the software's architecture. The phases of implementation and testing are critical for transforming conceptual designs into functioning software. Contributions. This paper examines how generative AI models have been integrated in a DevOps pipeline for helping in improving the quality of the software released. We conducted an experimentation on several repositories in Java and C# and we demonstrated that our solution is able to fix around</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Related Work</head><p>Developing an automatic code fixer is key for enhancing programming productivity <ref type="bibr" target="#b0">[1]</ref> and is an active area of research <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b2">3,</ref><ref type="bibr" target="#b3">4]</ref>.</p><p>This trend has gained increasing popularity in recent years. Examples include Google's Tricorder <ref type="bibr" target="#b4">[5]</ref>, Facebook's Getafix <ref type="bibr" target="#b5">[6]</ref> and Zoncolan and Microsoft's Visual Studio IntelliCode. The techniques underlying these tools can be classified into broadly two categories: logical, rulebased techniques <ref type="bibr" target="#b4">[5]</ref> and statistical, data-driven techniques <ref type="bibr" target="#b6">[7,</ref><ref type="bibr" target="#b5">6,</ref><ref type="bibr" target="#b7">8]</ref>. The former uses manually written rules capturing undesirable code patterns and scans the entire codebase for these classes of bugs. The latter learns to detect abnormal code from a large code corpus using deep neural networks.</p><p>Despite great strides, however, both kinds of tools are limited in generality because they target error patterns in specific codebases or they target specific bug types. For instance, Zoncolan's rules are designed to be specifically applicable to Facebook's codebases, and deep learning models target specialized bugs in variable naming <ref type="bibr" target="#b6">[7]</ref> or binary expressions <ref type="bibr" target="#b5">[6]</ref>. Moreover, the patterns are relatively syntactic, allowing them to be specified by human experts using logical rulesor learnt from a corpus of programs.</p><p>In this paper, we propose an effective and scalable easyto-use framework for fixing software issues in a DevOps pipeline by means of an LLM model (i.e., GPT3.5 1 ). </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Auto Fix</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Modelling Approach</head><p>In this section, we describe the LLM models that have been used, how the prompt has been engineered so that it effectively performs for our task as well as the classification of the issues based on a taxonomy that we defined.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">Model Selection</head><p>We evaluated the following models: We used OpenAI models via API on Cloud while we finetuned the Llama 2 model. Fine-tuning has been carried out by giving examples of snippets pairs incorrect code/correct code extracted from our internal repositories.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">Framework</head><p>We conducted an analysis about the distribution of issues being fixed by the proposed approach among five classes that we defined (see Figure <ref type="figure" target="#fig_0">1</ref>). On unused fields, best practices and code structure classes the proposed solution is able to correct around 50% of the issues whilst on the remaining two classes the fixing rate is around 30%. Please fix the error in the code snippet without completing it. The code must remain incomplete and indented as in the original snippet. Please provide a JSON response.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.">Prompt</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Engineered Prompt</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4.">Post-Processing</head><p>Following an analysis of common issues observed in code returned by generative models, a series of postprocessing functions have been implemented to enhance the quality of the response both in terms of writing style and integration with actual code. This manipulation occurs before the code is inserted into files, prior to undergoing quality checks and software compilation. Autocompletion errors prevention: Generative models often tend to complete the input code, which frequently consist of incomplete fragments, such as if or for statements without subsequent blocks, or portions that lack logical coherence when considered out of context. To address this issue, lines generated as completions of these snippets can be removed, considering the error occurs midway through the original snippet. Using Greedy String Tiling, a metric employed in literature for comparing code strings, the last lines of the generated code are compared with those from the input. If a match with the original code's final line is identified, only the preceding part up to that line is retained for insertion into the file.</p><p>Indentation correction: The generated code often loses the information regarding indentation levels, resulting in snippets where the indentation style and depth may differ from the original code. This discrepancy can include variations in both indentation style (such as tabs versus spaces) and indentation depth within the snippet.</p><p>Despite the flexible rules regarding indentation in currently supported languages, a method has been implemented to address this issue. This approach, again based on Greedy String Tiling, compares lines between input and output code to identify and apply a base indentation level that aligns with the indentation found in the received snippet. This ensures improved readability and quality of the generated code snippet, which is guaranteed to have consistent indentation with the surrounding code.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Experimental Evaluation</head><p>In this section, we report a study on how issues are distributed and results on two languages that are the most widely used by developers.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1.">Issue Distribution</head><p>We conducted an analysis about the distribution of issues being fixed by the proposed approach among five classes that we defined (see Figure <ref type="figure" target="#fig_2">2</ref>). Looking at the plot, on three classes the proposed solution is able to correct around 50% of the issues whilst on the remaining two classes the fixing rate is around 30%. Exception handling: in this class there are six Sonar-Qube rules. The type of issues belonging to this class are for example: 1) either log or rethrow this exception and 2) throw a dedicated exception instead of a generic one.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Repo</head><p>Best practices/conventions: in this class there are twenty-seven SonarQube rules. The type of issues belonging to this class are for example: 1) rename this field x to match the regular expression y and 2) block of commented lines of code should be removed.</p><p>Code structure/elements: in this class there are thirty-five SonarQube rules. The type of issues belonging to this class are for example: 1) merge this if statement with the enclosing one and 2) add a x field to this class.</p><p>Code complexity: in this class there are ten Sonar-Qube rules. The type of issues belonging to this class are for example: 1) the cyclomatic complexity of this method x is greater than the authorized value and 2) remove this expression which always evaluates to x.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2.">Performance Results</head><p>We report the quantitative evaluation of the proposed solution on the two languages of the experimentation. In Table <ref type="table" target="#tab_1">1</ref>, we summarize the results on Java language on which an average debit reduction of 29,4% has been reached, with a peak of 63.0%. The pipeline executes on average 5.5 times faster than developers with a peak of 17 times. In Table <ref type="table" target="#tab_2">2</ref>, we summarize the results on C# language on which an average debit reduction of 25,9% has been obtained, with a peak of 42.9%. The pipeline executes on average 2.4 times faster than developers with a peak of 4.8 times. Results on C# are slightly worst because code is more complex and for building and analyzing the code more time is required with respect to Java.  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Conclusions</head><p>In conclusion, our comprehensive study elucidates the multifaceted nature of the software development process, offering insights into optimizing development practices to meet and exceed the demanding requirements of today's applications. The integration of generative AI models into the software development lifecycle marks a significant advancement, showcasing the potential to revolutionize how software is developed, tested, and maintained. This paper contributes to the body of knowledge by demonstrating the effectiveness of these models in improving software quality and development efficiency, setting a precedent for future research and application in the field of software engineering.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Issue distribution being fixed by the proposed approach among five classes that we defined.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>1 .</head><label>1</label><figDesc>(OpenAI) gpt-3.5-turbo-0613 2. (OpenAI) gpt-3.5-turbo-1106 3. (OpenAI) gpt-4-0613 4. (MetaAI) llama-2-7b-hf</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Distribution of the fixed issues on five classes.</figDesc><graphic coords="4,99.71,84.19,395.86,248.26" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>System You are ChatGPT, a code snippet fixer. Your task is to generate a fix for the provided code snippet based on the given error message. Do not alter the code snippet other than fixing the error.</figDesc><table><row><cell></cell><cell cols="2">Incomplete code should remain incomplete.</cell></row><row><cell></cell><cell cols="2">Submit your response in JSON format with the</cell></row><row><cell></cell><cell cols="2">keys: corrected_code, correction_flag,</cell></row><row><cell></cell><cell cols="2">explanation,</cell><cell>renamed_variables.</cell></row><row><cell></cell><cell cols="2">corrected_code should be contained</cell></row><row><cell></cell><cell cols="2">in double quotes, and all double quotes in</cell></row><row><cell></cell><cell cols="2">the code snippet should be escaped with a</cell></row><row><cell></cell><cell>backslash.</cell><cell>correction_flag should be</cell></row><row><cell></cell><cell cols="2">1 if you have corrected the code snippet,</cell></row><row><cell></cell><cell cols="2">0 otherwise. The explanation field should</cell></row><row><cell></cell><cell cols="2">contain a brief explanation of the correction.</cell></row><row><cell></cell><cell cols="2">renamed_variables should be a Python</cell></row><row><cell></cell><cell cols="2">dictionary containing the names of custom</cell></row><row><cell></cell><cell cols="2">user defined functions or variables that you</cell></row><row><cell></cell><cell cols="2">have renamed as keys, and their new names as</cell></row><row><cell></cell><cell cols="2">values. Do not add any builtin functions you</cell></row><row><cell></cell><cell cols="2">might have changed to renamed_variables.</cell></row><row><cell>User</cell><cell cols="2">I have encountered an error.</cell></row><row><cell></cell><cell cols="2">Error message:</cell><cell>"System.Exception"</cell></row><row><cell></cell><cell cols="2">should not be thrown by user</cell></row><row><cell></cell><cell>Code snippet:</cell></row><row><cell></cell><cell cols="2">if (archiveResult.Result &lt;= 0) {</cell></row><row><cell></cell><cell cols="2">await sess.AbortTrans();</cell></row><row><cell></cell><cell cols="2">throw new Exception("Fail"); }</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 1</head><label>1</label><figDesc>Results on Java repositories.</figDesc><table><row><cell></cell><cell>Issue Fixed</cell><cell>Tec. Debit Red.</cell><cell>Speed Up</cell></row><row><cell># 1</cell><cell>100.0 %</cell><cell>63.0 %</cell><cell>10.3x</cell></row><row><cell># 2</cell><cell>41.0 %</cell><cell>13.1 %</cell><cell>2.4x</cell></row><row><cell># 3</cell><cell>36.6 %</cell><cell>10.3 %</cell><cell>2.2x</cell></row><row><cell># 4</cell><cell>32.5 %</cell><cell>20.0 %</cell><cell>2.0x</cell></row><row><cell># 5</cell><cell>46.5 %</cell><cell>26.6 %</cell><cell>2.9x</cell></row><row><cell># 6</cell><cell>58.3 %</cell><cell>46.4 %</cell><cell>17.0x</cell></row><row><cell># 7</cell><cell>47.3 %</cell><cell>26.7 %</cell><cell>2.0x</cell></row><row><cell>Avg</cell><cell>51.7 %</cell><cell>29.4 %</cell><cell>5.5x</cell></row><row><cell cols="4">Unused variables/fields: in this class there are five</cell></row><row><cell cols="4">SonarQube rules. In order to better understand what</cell></row><row><cell cols="4">kind of issues belong to this class, here two examples: 1)</cell></row><row><cell cols="4">remove this useless assignment to local variable x and 2)</cell></row><row><cell cols="3">remove this unused x local variable.</cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Table 2</head><label>2</label><figDesc>Results on C# repositories.</figDesc><table><row><cell>Repo</cell><cell>Issue Fixed</cell><cell>Tec. Debit Red.</cell><cell>Speed Up</cell></row><row><cell># 1</cell><cell>46.7 %</cell><cell>36.4 %</cell><cell>2.5x</cell></row><row><cell># 2</cell><cell>30.6 %</cell><cell>12.8 %</cell><cell>1.6x</cell></row><row><cell># 3</cell><cell>39.6 %</cell><cell>18.5 %</cell><cell>1.3x</cell></row><row><cell># 4</cell><cell>32.4 %</cell><cell>14.3 %</cell><cell>0.7x</cell></row><row><cell># 5</cell><cell>37.1 %</cell><cell>34.5 %</cell><cell>2.7x</cell></row><row><cell># 6</cell><cell>38.2 %</cell><cell>21.8 %</cell><cell>3.0x</cell></row><row><cell># 7</cell><cell>61.2 %</cell><cell>42.9 %</cell><cell>4.8x</cell></row><row><cell>Avg</cell><cell>40.8 %</cell><cell>25.9 %</cell><cell>2.4x</cell></row></table></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Programmers&apos; build errors: a case study (at google)</title>
		<author>
			<persName><forename type="first">H</forename><surname>Seo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Sadowski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Elbaum</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Aftandilian</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Bowdidge</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">36th International Conference on Software Engineering</title>
				<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="724" to="734" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Hoppity: learning graph transformations to detect and fix bugs in programs</title>
		<author>
			<persName><forename type="first">E</forename><surname>Dinella</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Dai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Naik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Song</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Wang</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Conference on Learning Representations (ICLR)</title>
				<imprint>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Patching as translation: the data and the metaphor</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Ding</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Ray</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Devanbu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">J</forename><surname>Hellendoorn</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">35th ACM International Conference on Automated Software Engineering</title>
				<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="275" to="286" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Deepdelta: learning to repair compilation errors</title>
		<author>
			<persName><forename type="first">A</forename><surname>Mesbah</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rice</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Johnston</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Glorioso</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Aftandilian</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering</title>
				<imprint>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="925" to="936" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Tricorder: building a program analysis ecosystem</title>
		<author>
			<persName><forename type="first">C</forename><surname>Sadowski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Van Gogh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Jaspan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Soderberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Winter</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">37th International Conference on Software Engineering</title>
				<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="volume">1</biblScope>
			<biblScope unit="page" from="598" to="608" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Getafix: learning to fix bugs automatically</title>
		<author>
			<persName><forename type="first">J</forename><surname>Bader</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Scott</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Pradel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Chandra</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM on Programming Languages</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="page" from="1" to="27" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<author>
			<persName><forename type="first">M</forename><surname>Allamanis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Brockschmidt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Khademi</surname></persName>
		</author>
		<idno type="arXiv">arXiv:1711.00740</idno>
		<title level="m">Learning to represent programs with graphs</title>
				<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
	<note type="report_type">arXiv preprint</note>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<author>
			<persName><forename type="first">M</forename><surname>Vasic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Kanade</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Maniatis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Bieber</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Singh</surname></persName>
		</author>
		<idno type="arXiv">arXiv:1904.01720</idno>
		<title level="m">Neural program repair by jointly learning to localize and repair</title>
				<imprint>
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
	<note type="report_type">arXiv preprint</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
