<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" "https://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" article-type="research-article" dtd-version="1.2" xml:lang="en">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">IJCSER</journal-id>
<journal-title-group><journal-title>International Journal of Computer Science Engineering and Research</journal-title></journal-title-group>
<publisher><publisher-name>Thomson &amp; Ryberg Publications</publisher-name></publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.62715/ijcser.2026.v1.i1.pp19-24</article-id>
<article-id pub-id-type="publisher-id">7190fc8fb1</article-id>
<article-categories><subj-group subj-group-type="heading"><subject>Methodology Article</subject></subj-group></article-categories>
<title-group><article-title>A Reproducible Benchmarking Framework for Evaluating Code-Generating Language Models on Maintenance Tasks</article-title></title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes"><name><surname>Espinoza</surname><given-names>Ananya</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1">*</xref></contrib>
<contrib contrib-type="author"><name><surname>Chandrasekar</surname><given-names>Pawel</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib>
<contrib contrib-type="author"><name><surname>Eriksson</surname><given-names>Camila</given-names></name><xref ref-type="aff" rid="aff3"><sup>3</sup></xref></contrib>
<aff id="aff1"><label>1</label>Department of Computer Science, Limpopo Graduate Institute of Computer Science, Barbados</aff>
<aff id="aff2"><label>2</label>Department of Computer Science, Nejd Research Institute of Computer Science, Sri Lanka</aff>
<aff id="aff3"><label>3</label>Department of Computer Science, Balkan Center for Computer Science, United Arab Emirates</aff>
</contrib-group>
<author-notes><corresp id="cor1">* Correspondence: <email>ananya.espinoza@limpopo.edu</email></corresp></author-notes>
<pub-date pub-type="epub" iso-8601-date="2026-07-17"><day>17</day><month>07</month><year>2026</year></pub-date>
<volume>1</volume>
<issue>1</issue>
<fpage>19</fpage>
<lpage>24</lpage>
<history>
<date date-type="received" iso-8601-date="2026-03-30"><day>30</day><month>03</month><year>2026</year></date>
<date date-type="accepted" iso-8601-date="2026-05-31"><day>31</day><month>05</month><year>2026</year></date>
</history>
<permissions><copyright-statement>© 2026 The Author(s)</copyright-statement><copyright-year>2026</copyright-year><license license-type="open-access" xlink:href="https://creativecommons.org/licenses/by/4.0/"><license-p>This is an open access article distributed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).</license-p></license></permissions>
<self-uri xlink:href="https://trpub.org/article.php?id=7190fc8fb1"/>
<abstract><p>Benchmarks for code-generating language models grew up around the task of writing a new function from a description. Most professional programming is something else: changing code that already exists, to fix a defect, to keep pace with a dependency or to improve structure without altering behaviour. Published scores on function-synthesis benchmarks say little about that work, and they are hard to reproduce because models change behind fixed names, sampling is random and test suites are incomplete or unstable. This article proposes a framework for benchmarking models on maintenance tasks in a way that others can repeat. It defines four task categories taken from the software maintenance literature, a procedure for deriving tasks from the history of open-source repositories, containerised execution with pinned dependencies, test-based oracles supplemented by checks for unintended change, controls against training-data contamination, a fixed protocol for invoking models, and rules for statistical reporting and artefact release. Each element is justified from prior work on software engineering benchmarks and on reproducibility in machine learning. The framework is a design. It has not been instantiated or used to evaluate any model here, and the article identifies the assumptions that a first implementation would need to test.</p></abstract>
<kwd-group kwd-group-type="author">
<kwd>Code generation</kwd>
<kwd>Large language models</kwd>
<kwd>Software maintenance</kwd>
<kwd>Benchmarking</kwd>
<kwd>Reproducibility</kwd>
<kwd>Program repair</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="sec1"><title>1. Introduction</title>
<p>The capability of language models to write code is usually reported as a score on a benchmark, and the best known benchmarks ask for a self-contained function. HumanEval consists of 164 hand-written Python problems, each with a signature, a docstring and hidden unit tests (Chen et al., 2021), and MBPP follows the same pattern with crowd-sourced problems (Austin et al., 2021). They are cheap to run and easy to interpret. They also describe a kind of programming that occupies a small part of a developer&#x27;s time.</p>
<p>The larger part is maintenance. Lientz and Swanson (1980) distinguished corrective, adaptive and perfective maintenance, and the international standard adds a preventive category (ISO/IEC/IEEE, 2022). In each, the input is an existing system and a reason to change it, and success means that the change does what was asked and nothing else. A model that writes a correct new function may still be poor at locating the right place in a large codebase, at respecting its conventions, or at leaving unrelated behaviour intact.</p>
<p>This article proposes a benchmarking framework aimed at maintenance and designed from the start for reproducibility. It is a proposal: the framework is specified, with reasons, but has not been built or applied here, and no model is ranked.</p>
</sec>
<sec id="sec2"><title>2. Background</title>
<p>The design responds to two strands of earlier work, one on benchmarks drawn from real repositories and one on what makes computational results repeatable.</p>
<sec id="sec2-2"><title>2.1. Benchmarks built from real software</title>
<p>Software engineering research has long used curated collections of real faults. Defects4J packages bugs from open-source Java projects with the tests that expose them and a harness for checking out faulty and fixed versions (Just et al., 2014). CodeXGLUE gathered a range of code understanding and generation tasks, among them code repair and translation, and scored most of them by textual similarity to a reference (Lu et al., 2021). SWE-bench moved to whole repositories: each task pairs a reported issue with the codebase at that commit, and a submission passes if tests associated with the resolving pull request succeed while previously passing tests still do (Jimenez et al., 2024). The framework proposed here adopts that structure and extends it beyond issue resolution.</p>
</sec>
<sec id="sec2-3"><title>2.2. Threats to reproducibility</title>
<p>Four threats recur in the literature. Similarity metrics such as BLEU (Papineni et al., 2002) and its code-aware variant CodeBLEU (Ren et al., 2020) reward resemblance to one reference, although many different patches can be correct. Test suites can be too weak: when the tests of an existing benchmark were extended, solutions previously counted as correct were found to be wrong (Liu et al., 2023). Tests can also be flaky, passing or failing without any change to the code (Luo et al., 2014). And the models themselves are moving targets: hosted models are updated or withdrawn, outputs are sampled, and benchmark material may already be in the training data (Sallou et al., 2024). Experience elsewhere in computing suggests that without deliberate packaging, even published code often cannot be rebuilt by others (Collberg and Proebsting, 2016).</p>
</sec>
</sec>
<sec id="sec3"><title>3. The Proposed Framework</title>
<p>The framework has seven elements. Table 1 lists them with the threat each is meant to address, and the subsections that follow take them in order.</p>
<table-wrap id="tbl1"><label>Table 1</label><caption><p>Elements of the proposed framework and the threat to validity or reproducibility that each addresses</p></caption><table frame="hsides" rules="groups"><thead><tr><th>Element</th><th>What is specified</th><th>Threat addressed</th></tr></thead><tbody><tr><td>Task taxonomy</td><td>Corrective, adaptive, perfective and preventive tasks, reported separately</td><td>Scores that hide uneven ability</td></tr><tr><td>Task derivation</td><td>Rules for mining commits and writing the task statement</td><td>Selection bias; leaked solutions</td></tr><tr><td>Execution environment</td><td>One container image per task with pinned dependencies</td><td>Builds that cannot be repeated</td></tr><tr><td>Oracles</td><td>Target tests, regression tests and a check on the size of the change</td><td>Weak tests; unintended edits</td></tr><tr><td>Contamination control</td><td>Cut-off dates, a held-back split and periodic refresh</td><td>Memorised benchmark content</td></tr><tr><td>Invocation protocol</td><td>Fixed prompt, context budget, sampling settings and model identifier</td><td>Unreported tuning; model drift</td></tr><tr><td>Reporting and release</td><td>Intervals, paired comparisons, failure categories, full logs</td><td>Unsupported rankings</td></tr></tbody></table></table-wrap>
<sec id="sec3-2"><title>3.1. Task taxonomy</title>
<p>Tasks fall into four categories. Corrective tasks repair a defect described in an issue. Adaptive tasks respond to a change in the environment, typically a new major version of a library or language whose interfaces have moved. Perfective tasks add or alter a small feature in existing code. Preventive tasks restructure code without changing what it does, in the sense of refactoring given by Fowler (2018). The categories differ in how success is judged, so results are always reported by category and never only as one aggregate.</p>
</sec>
<sec id="sec3-3"><title>3.2. Deriving tasks from repository history</title>
<p>Candidate tasks are taken from merged changes in open-source repositories that have a permissive licence, an executable test suite and an active history. A change qualifies if it touches source and tests, if the tests it adds or alters fail before it and pass after it, and if it can be assigned to one category from its description and content. The task statement given to the model is the issue text or, where none exists, a description written from the commit message with any hint of the solution removed. Refactoring tasks have no failing test by definition; their statement names the restructuring wanted, and the oracle described below changes accordingly. Each task records the repository, the two commits, the category and the person who classified it, and a sample is classified twice so that agreement can be reported.</p>
</sec>
<sec id="sec3-4"><title>3.3. Execution environment</title>
<p>Every task is distributed with a container image in which the repository builds and its tests run at the parent commit. Containers are the established means of fixing an execution environment (Merkel, 2014). Dependency versions are pinned by hash, network access is disabled during evaluation, and the image digest is part of the task identifier. Before a task is admitted, its tests are run repeatedly at both commits. Any test whose outcome varies is excluded from the oracle, and a task left without a stable discriminating test is dropped.</p>
</sec>
<sec id="sec3-5"><title>3.4. Oracles and measures</title>
<p>The primary measure is the proportion of tasks resolved. A corrective, adaptive or perfective task is resolved when the target tests pass and all previously passing tests still pass. A preventive task is resolved when the whole suite still passes and a static check confirms the requested structural property, for example that a named function has been split or a deprecated call no longer appears. Two secondary measures guard against unintended change: the number of files and lines altered relative to the reference patch, and whether the patch applies and builds at all. Textual similarity to the reference is not used as a measure of correctness.</p>
</sec>
<sec id="sec3-6"><title>3.5. Contamination control</title>
<p>Three controls limit the chance that a model has seen the answer. Tasks are drawn only from changes made after a stated date, and every report gives that date next to the documented training cut-off of each model. Part of the task set is held back and released only as aggregate scores, so that a gap between public and held-back results can reveal memorisation. The public set is refreshed on a fixed schedule with newer changes, and old versions remain available under their own identifiers so that earlier results stay interpretable.</p>
</sec>
<sec id="sec3-7"><title>3.6. Invocation protocol</title>
<p>The prompt template, the method of selecting repository context, the context budget, the sampling temperature, the number of samples per task and any tool access are fixed in a configuration file published with the results. Hosted models are identified by the provider&#x27;s dated version string together with the dates of the run. For open-weight models the checksum of the weights is recorded. Raw requests and responses are logged in full. Development of prompts is confined to a small tuning split that plays no part in reported scores. Figure 1 shows the pipeline from repository selection to release.</p>
<fig id="fig1"><label>Figure 1</label><caption><p>The proposed benchmarking pipeline, from repository selection to the release of artefacts</p></caption><graphic xlink:href="IJCSER_V1I1_2026_04_Figure1.png" mimetype="image" mime-subtype="png"/></fig>
</sec>
<sec id="sec3-8"><title>3.7. Statistical reporting and release</title>
<p>Because model output is sampled, each model is run several times per task and the resolved proportion is reported with a bootstrap confidence interval (Efron and Tibshirani, 1993). Comparisons between two models use a paired test on per-task outcomes and state an effect size, in line with the guidance of Arcuri and Briand (2011) for randomised algorithms in software engineering. Unresolved tasks are sorted into failure categories: no patch produced, patch does not apply, build fails, target tests fail, regression introduced. The task set, images, configuration, logs and analysis scripts are released together, following the practice encouraged by reproducibility checklists in machine learning (Pineau et al., 2021).</p>
</sec>
</sec>
<sec id="sec4"><title>4. Fitting the Framework to Practice</title>
<p>The framework is demanding, and a group adopting it will have to make economies. The costly steps are building a container for every task and running each model many times. Both scale linearly, so a first instantiation can start with a modest number of tasks in one programming language and still report honest intervals; wide intervals are informative in themselves. Classification of tasks needs people who can read the code concerned, and is the step least suited to automation.</p>
<p>An organisation that wants to evaluate models on its own code can apply the same elements to private repositories. Contamination is then less of a concern, since the code has not been published, while confidentiality becomes the constraint on which models may be sent the material at all. The reporting rules apply unchanged.</p>
</sec>
<sec id="sec5"><title>5. Limitations and What Remains to Be Shown</title>
<p>Nothing in this article demonstrates that the framework works. Several assumptions need testing by an implementation. One is that enough qualifying changes exist in each category. Adaptive and preventive changes are often mixed into larger commits and may prove hard to isolate. Another is that the static checks for refactoring tasks can be written without encoding one particular solution. A third is that test-based oracles are adequate. Passing the project&#x27;s tests does not make a patch maintainable or acceptable to its reviewers, and the framework measures neither.</p>
<p>Contamination controls reduce the problem without removing it. Cut-off dates published by model providers cannot be verified from outside, and newer changes may resemble older ones the model has seen. Nor can any protocol make a withdrawn hosted model available again. What the framework secures in that case is the record: the exact inputs, outputs and environment, from which the scoring at least can be repeated.</p>
</sec>
<sec id="sec6"><title>6. Conclusion</title>
<p>Evaluating code-generating models on maintenance calls for tasks drawn from real change history, environments that rebuild identically, oracles that detect unintended edits, and reporting that respects randomness. The framework proposed here assembles those requirements into seven specified elements. It is offered as a design to be implemented, criticised and revised, and its usefulness will be shown only when independent groups run it and reach the same numbers.</p>
</sec>
<sec id="sec7"><title>Conflict of interest</title>
<p>To be declared by the author(s) before publication.</p>
</sec>
<sec id="sec8"><title>Funding</title>
<p>To be declared by the author(s) before publication.</p>
</sec>
</body>
<back>
<ref-list><title>References</title>
<ref id="ref1"><label>1</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Arcuri, A. and Briand, L.</string-name></person-group> (<year>2011</year>). <article-title>A practical guide for using statistical tests to assess randomized algorithms in software engineering</article-title>. <source>Proceedings of the 33rd International Conference on Software Engineering</source>, <fpage>1-10</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1145/1985793.1985795">https://doi.org/10.1145/1985793.1985795</ext-link></mixed-citation></ref>
<ref id="ref2"><label>2</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Austin, J., Odena, A., Nye, M., Bosma, M., Michalewski, H., Dohan, D., Jiang, E., Cai, C., Terry, M., Le, Q. and Sutton, C.</string-name></person-group> (<year>2021</year>). <article-title>Program synthesis with large language models</article-title>. <source>arXiv preprint arXiv:2108.07732</source></mixed-citation></ref>
<ref id="ref3"><label>3</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Chen, M., Tworek, J., Jun, H., Yuan, Q., Pinto, H.P.O., Kaplan, J., Edwards, H., Burda, Y., Joseph, N., Brockman, G. et al.</string-name></person-group> (<year>2021</year>). <article-title>Evaluating large language models trained on code</article-title>. <source>arXiv preprint arXiv:2107.03374</source></mixed-citation></ref>
<ref id="ref4"><label>4</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Collberg, C. and Proebsting, T.A.</string-name></person-group> (<year>2016</year>). <article-title>Repeatability in computer systems research</article-title>. <source>Communications of the ACM</source>, <volume>59(3)</volume>, <fpage>62-69</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1145/2812803">https://doi.org/10.1145/2812803</ext-link></mixed-citation></ref>
<ref id="ref5"><label>5</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Efron, B. and Tibshirani, R.J.</string-name></person-group> (<year>1993</year>). <article-title>An Introduction to the Bootstrap</article-title>. <source>Chapman &amp; Hall, New York</source></mixed-citation></ref>
<ref id="ref6"><label>6</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Fowler, M.</string-name></person-group> (<year>2018</year>). <article-title>Refactoring: Improving the Design of Existing Code, 2nd edition</article-title>. <source>Addison-Wesley, Boston</source></mixed-citation></ref>
<ref id="ref7"><label>7</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>ISO/IEC/IEEE</string-name></person-group> (<year>2022</year>). <article-title>ISO/IEC/IEEE 14764:2022, Software engineering - Software life cycle processes - Maintenance</article-title>. <source>International Organization for Standardization, Geneva</source></mixed-citation></ref>
<ref id="ref8"><label>8</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Jimenez, C.E., Yang, J., Wettig, A., Yao, S., Pei, K., Press, O. and Narasimhan, K.</string-name></person-group> (<year>2024</year>). <article-title>SWE-bench: Can language models resolve real-world GitHub issues?</article-title>. <source>Proceedings of the Twelfth International Conference on Learning Representations (ICLR 2024)</source></mixed-citation></ref>
<ref id="ref9"><label>9</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Just, R., Jalali, D. and Ernst, M.D.</string-name></person-group> (<year>2014</year>). <article-title>Defects4J: A database of existing faults to enable controlled testing studies for Java programs</article-title>. <source>Proceedings of the 2014 International Symposium on Software Testing and Analysis</source>, <fpage>437-440</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1145/2610384.2628055">https://doi.org/10.1145/2610384.2628055</ext-link></mixed-citation></ref>
<ref id="ref10"><label>10</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Lientz, B.P. and Swanson, E.B.</string-name></person-group> (<year>1980</year>). <article-title>Software Maintenance Management</article-title>. <source>Addison-Wesley, Reading, MA</source></mixed-citation></ref>
<ref id="ref11"><label>11</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Liu, J., Xia, C.S., Wang, Y. and Zhang, L.</string-name></person-group> (<year>2023</year>). <article-title>Is your code generated by ChatGPT really correct? Rigorous evaluation of large language models for code generation</article-title>. <source>Advances in Neural Information Processing Systems 36 (NeurIPS 2023)</source></mixed-citation></ref>
<ref id="ref12"><label>12</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Lu, S., Guo, D., Ren, S., Huang, J., Svyatkovskiy, A., Blanco, A., Clement, C., Drain, D., Jiang, D., Tang, D. et al.</string-name></person-group> (<year>2021</year>). <article-title>CodeXGLUE: A machine learning benchmark dataset for code understanding and generation</article-title>. <source>arXiv preprint arXiv:2102.04664</source></mixed-citation></ref>
<ref id="ref13"><label>13</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Luo, Q., Hariri, F., Eloussi, L. and Marinov, D.</string-name></person-group> (<year>2014</year>). <article-title>An empirical analysis of flaky tests</article-title>. <source>Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering</source>, <fpage>643-653</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1145/2635868.2635920">https://doi.org/10.1145/2635868.2635920</ext-link></mixed-citation></ref>
<ref id="ref14"><label>14</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Merkel, D.</string-name></person-group> (<year>2014</year>). <article-title>Docker: Lightweight Linux containers for consistent development and deployment</article-title>. <source>Linux Journal</source>, <volume>2014(239)</volume>, <fpage>2</fpage></mixed-citation></ref>
<ref id="ref15"><label>15</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Papineni, K., Roukos, S., Ward, T. and Zhu, W.-J.</string-name></person-group> (<year>2002</year>). <article-title>BLEU: A method for automatic evaluation of machine translation</article-title>. <source>Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics</source>, <fpage>311-318</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3115/1073083.1073135">https://doi.org/10.3115/1073083.1073135</ext-link></mixed-citation></ref>
<ref id="ref16"><label>16</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Pineau, J., Vincent-Lamarre, P., Sinha, K., Larivière, V., Beygelzimer, A., d&#x27;Alché-Buc, F., Fox, E. and Larochelle, H.</string-name></person-group> (<year>2021</year>). <article-title>Improving reproducibility in machine learning research (a report from the NeurIPS 2019 reproducibility program)</article-title>. <source>Journal of Machine Learning Research</source>, <volume>22(164)</volume>, <fpage>1-20</fpage></mixed-citation></ref>
<ref id="ref17"><label>17</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Ren, S., Guo, D., Lu, S., Zhou, L., Liu, S., Tang, D., Sundaresan, N., Zhou, M., Blanco, A. and Ma, S.</string-name></person-group> (<year>2020</year>). <article-title>CodeBLEU: A method for automatic evaluation of code synthesis</article-title>. <source>arXiv preprint arXiv:2009.10297</source></mixed-citation></ref>
<ref id="ref18"><label>18</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Sallou, J., Durieux, T. and Panichella, A.</string-name></person-group> (<year>2024</year>). <article-title>Breaking the silence: The threats of using LLMs in software engineering</article-title>. <source>Proceedings of the 2024 ACM/IEEE 44th International Conference on Software Engineering: New Ideas and Emerging Results</source></mixed-citation></ref>
</ref-list>
</back>
</article>