Meta tags:
Headings (most frequently used words):
automatic, bug, fixing, based, contents, specification, techniques, use, search, space, overfitting, limitations, of, benchmarks, example, tools, references, external, links, generate, and, validate, synthesis, data, driven, template, repair, java, other, languages, proprietary,
Text of the page (most frequently used words):
the (155), and (79), #repair (71), for (67), software (61), doi (56), program (48), isbn (44), patches (44), 978 (41), bug (40), that (39), acm (38), automatic (36), engineering (36), fixing (34), s2cid (33), international (33), proceedings (32), conference (30), 1145 (30), ieee (29), generate (26), based (26), patch (25), test (25), code (24), 2015 (24), search (23), bugs (23), 4503 (23), edit (22), from (21), 1109 (21), techniques (21), automated (19), validate (19), are (19), java (18), martin (17), programs (17), new (16), with (15), analysis (15), suite (15), arxiv (14), 2017 (14), york (14), icse (14), synthesis (14), tool (14), can (14), tools (13), overfitting (13), such (13), this (12), programming (12), genprog (12), human (12), fix (12), statement (11), systems (11), generation (11), benchmark (11), cases (11), 2019 (10), bibcode (10), 2014 (10), language (9), approaches (9), correct (9), example (9), one (9), use (8), 2021 (8), space (8), 2018 (8), goues (8), claire (8), candidate (8), symposium (8), large (8), long (8), rinard (8), fixes (8), uses (8), source (8), all (8), wikipedia (7), using (7), retrieved (7), monperrus (7), tse (7), transactions (7), repositories (7), zhang (7), correctness (7), learning (7), fan (7), 2016 (7), automatically (7), 2013 (7), other (7), there (7), not (7), more (7), has (6), durieux (6), thomas (6), null (6), via (6), weimer (6), westley (6), benchmarks (6), press (6), wang (6), michael (6), testing (6), changes (6), than (6), errors (6), oracle (6), out (6), which (6), produce (6), typically (6), validated (6), may (5), page (5), 2026 (5), research (5), david (5), martinez (5), matias (5), dynamic (5), 2020 (5), brun (5), yuriy (5), study (5), issn (5), set (5), usa (5), sigplan (5), languages (5), defects4j (5), existing (5), problem (5), 2012 (5), memory (5), getafix (5), data (5), only (5), been (5), specification (5), templates (5), generates (5), same (5), used (5), possible (5), incorrect (5), inputs (5), information (5), recent (5), toggle (4), contents (4), about (4), available (4), development (4), links (4), design (4), pointer (4), saner (4), multi (4), genetic (4), forrest (4), stephanie (4), 2024 (4), context (4), joint (4), meeting (4), foundations (4), empirical (4), roychoudhury (4), abhik (4), kim (4), tian (4), yan (4), ingredients (4), random (4), quality (4), 2008 (4), sequence (4), end (4), ase (4), machine (4), syntax (4), formal (4), 2010 (4), conditional (4), symbolic (4), semfix (4), exist (4), overflow (4), github (4), first (4), evaluated (4), without (4), binary (4), whether (4), main (4), file (4), original (4), specific (4), developer (4), often (4), statements (4), state (4), because (4), but (4), way (4), when (4), open (4), level (4), expected (4), behavior (4), specifications (4), hide (4), move (4), sidebar (4), view (3), under (3), apply (3), was (3), 5090 (3), objective (3), smith (3), many (3), mining (3), january (3), quixbugs (3), chen (3), companion (3), aware (3), better (3), conf (3), ernst (3), gao (3), trust (3), liu (3), kui (3), haoye (3), lei (3), mao (3), xiaoguang (3), klein (3), jacques (3), bissyandé (3), tegawendé (3), were (3), 1007 (3), verification (3), 37th (3), representation (3), xuan (3), cure (3), esec (3), fse (3), hdl (3), 2756 (3), 2568225 (3), nguyen (3), survey (3), security (3), 2009 (3), patching (3), environment (3), xiong (3), yingfei (3), runtime (3), 2025 (3), semantic (3), guided (3), computer (3), condition (3), angelix (3), 4673 (3), learned (3), each (3), redundancy (3), 36th (3), trained (3), provide (3), improve (3), facebook (3), generated (3), learn (3), buggy (3), past (3), directly (3), note (3), manybugs (3), least (3), implementations (3), patterns (3), cover (3), include (3), collected (3), real (3), world (3), limitation (3), top (3), art (3), incomplete (3), does (3), have (3), failing (3), learns (3), some (3), regression (3), also (3), system (3), template (3), classes (3), execution (3), another (3), mutation (3), operators (3), outputs (3), assumption (3), specify (3), topic (2), table (2), developers (2), contact (2), privacy (2), policy (2), additional (2), terms (2), site (2), september (2), categories (2), cs1 (2), maint (2), periodical (2), short (2), description (2), different (2), wikidata (2), org (2), related (2), external (2), 2022 (2), coding (2), astor (2), exploring (2), 1016 (2), jss (2), journal (2), exceptions (2), 24th (2), evolution (2), reengineering (2), yuan (2), arja (2), 1067 (2), edward (2), devanbu (2), premkumar (2), 979 (2), practice (2), jar (2), 110825 (2), lin (2), james (2), solar (2), lezama (2), armando (2), challenge (2), applications (2), khurshid (2), sarfraz (2), 5638 (2), 3180155 (2), 40th (2), madeiral (2), fernanda (2), 395 (2), 5386 (2), studies (2), yang (2), dongsun (2), koyuncu (2), anil (2), where (2), s10664 (2), loop (2), validation (2), andrew (2), xin (2), association (2), computing (2), machinery (2), change (2), descriptions (2), evaluating (2), link (2), cite (2), 35th (2), bach (2), semantics (2), 3675 (2), 2786805 (2), 10th (2), 1721 (2), 38th (2), yuhua (2), dai (2), ziying (2), chengsong (2), 265 (2), 14976851 (2), 2568254 (2), 254 (2), strength (2), thanhvu (2), method (2), 104 (2), eric (2), qrs (2), reliability (2), deployed (2), 60558 (2), operating (2), principles (2), muşlu (2), kıvanç (2), holmes (2), reid (2), notkin (2), speculative (2), integrated (2), recommendations (2), 669 (2), 682 (2), qing (2), mei (2), hong (2), leak (2), 4799 (2), 1934 (2), changing (2), issre (2), sidiroglou (2), stelios (2), error (2), implementation (2), pradel (2), repairagent (2), autonomous (2), llm (2), agent (2), chandra (2), satish (2), 159 (2), jie (2), crash (2), sites (2), 0025 (2), 30th (2), tan (2), neural (2), translation (2), 43rd (2), bodik (2), rastislav (2), seshia (2), sanjit (2), 11th (2), snippets (2), dynamoth (2), component (2), nopol (2), multiline (2), austin (2), texas (2), 3076 (2), zichao (2), achour (2), sara (2), plausibility (2), 6845282 (2), 3620 (2), 2771783 (2), 2771791 (2), systematic (2), already (2), into (2), assumptions (2), 1403 (2), transfer (2), structure (2), science (2), 642 (2), contracts (2), pdf (2), communications (2), references (2), private (2), models (2), solutions (2), identify (2), proprietary (2), applied (2), parser (2), eiffel (2), multiple (2), including (2), web (2), queries (2), user (2), reporting (2), solver (2), equivalent (2), searchrepair (2), replacing (2), elsewhere (2), much (2), prophet (2), recognize (2), leaks (2), extract (2), extensively (2), clearview (2), generating (2), especially (2), most (2), prototypes (2), their (2), current (2), found (2), single (2), contains (2), commits (2), within (2), time (2), effects (2), number (2), rely (2), guarantees (2), functionalities (2), causing (2), approach (2), further (2), then (2), passing (2), limitations (2), alternatively (2), heuristic (2), pass (2), yet (2), fact (2), means (2), fixed (2), previously (2), they (2), early (2), reported (2), possibly (2), made (2), drive (2), x86 (2), instance (2), potential (2), insertion (2), integer (2), check (2), value (2), variable (2), exception (2), targeted (2), validating (2), certain (2), kind (2), learnt (2), get (2), applies (2), its (2), order (2), mined (2), effectiveness (2), successful (2), potentially (2), among (2), driven (2), smt (2), patched (2), angelic (2), localization (2), grained (2), generally (2), strategy (2), abstract (2), tree (2), exposes (2), projects (2), functionality (2), appearance (2), upload (2), history (2), read (2), article (2), subsection (2), log (2), create (2), account (2), donate (2), menu (2), add, mobile, cookie, statistics, conduct, legal, safety, contacts, disclaimers, text, you, agree, registered, trademark, non, profit, organization, wikimedia, foundation, inc, creative, commons, attribution, sharealike, license, rendered, parsoid, last, edited, utc, hidden, articles, debugging, https, index, php, title, automatic_bug_fixing, oldid, 1374879563, datasets, etc, thompson, techtimes, ishraq, khan, revolutionizing, scene, march, sifted, coming, your, job, beyond, 069, 1802, 03365, 151, metaprogramming, 358, 2736203, 5501, 7884635, 1812, 00409, 349, banzhaf, wolfgang, 25222219, 2874648, 2020itsen, 1040y, 1712, 07804, 1040, holtschulte, neal, 1256, 2454513, 2015itsen, 1236l, 1236, intro, class, meem, fairuz, nawer, justin, johnson, brittany, april, 4007, 0217, 3597503, 3639182, 46th, experiences, saha, ripon, lyu, yingjun, lam, wing, yoshida, hiroaki, prasad, mukul, msr, 50770093, 5716, 3196398, 3196473, 15th, comprehensive, 0164, 1212, 1805, 03454, 171, derrick, koppel, angela, lingual, quixey, 5514, 3135932, 3135941, humanity, hua, jinru, mengshi, kaiyuan, towards, practical, demand, 49666327, 3180245, wen, ming, junjie, rongxin, cheung, shing, chi, 3374770, 3180233, hao, dan, sobreira, victor, almeida, maia, marcelo, dissection, dataset, anatomy, 140, 4969, 8330203, 2018sane, 21s, 1801, 06393, 130, 25th, just, rené, jalali, darioush, 440, 2645, 2610384, 2628055, 437, database, faults, enable, controlled, abreu, rui, 313, 5572, 3338906, 3338911, 302, 27th, european, review, scale, experiment, 141, 551, attempts, noller, yannic, shariffdeen, ridwan, xiang, enhancement, issues, 2240, 9221, 3510003, 3510040, 2022icse, 191n, 2228, 44th, deheng, kisub, 122, 021, 10003, böhme, marcel, geethal, charaka, pham, van, thuan, icst, porto, portugal, 285, 209386817, 7281, 5778, icst46399, 00036, 1912, 07758, 274, 13th, tang, xunzhu, habib, shangwen, xia, 2023, 251403079, 9475, 3551349, 3556914, 2208, 04125, answer, correlating, news, kaboré, abdoul, kader, 992, 6768, 3324884, 3416532, 981, predicting, reiss, steven, identifying, overfitted, through, case, 236, 20562134, 5076, 3092703, 3092718, 226, 26th, sigsoft, thung, ferdian, 3033, 3635768, 1382, 3256, 017, 9577, 3007, barr, earl, worse, disease, 543, 6300790, 2786825, 532, spaces, 713, 7426809, 3900, 113656, 2884781, 2884872, 1602, 05643, 702, generic, 2326, 3881, 2011, 2012itsen, 54l, shilong, dongcheng, zhao, man, hui, wong, c63300, 00063, perkins, jeff, 102, 7597529, 752, 1629575, 1629585, sigops, 22nd, october, 5795141, 0362, 1340, 2384616, 2384665, notices, yaqing, weikun, zhou, zhaoping, xie, bing, safe, piscataway, jersey, 470, 459, volume, dobolyi, kinga, handling, 1454939, 19th, douskos, containment, recovery, shepherding, pldi, 238, 6252501, 2784, 2594291, 2594337, 227, bouzenia, islem, 2200, 3315, 0569, icse55347, 00157, 2188, 47th, zimin, kommrusch, steve, tufano, michele, pouchet, louis, noel, poshyvanyk, denys, sequencer, 1943, 2940179, 2021itsen, 1943c, 1901, 01808, bader, johannes, scott, oopsla, 3360585, 1902, 06111, hansheng, recurring, analyzing, 318, 2513924, 307, jiang, nan, lutellier, thibaud, 1173, 6654, 0296, icse43902, 00107, 2103, 00073, 1161, yalin, stolee, kathryn, repairing, lincoln, nebraska, 306, 16361458, 295, alur, rajeev, juniwal, garvit, milo, raghothaman, mukund, singh, rishabh, udupa, abhishek, 9835678, fmcad, 6679385, methods, aided, torlak, emina, chu, duc, hiep, visser, willem, 604, 1503790, 5105, 3106237, 3106309, 593, galenson, joel, reames, philip, hartmann, björn, sen, koushik, 663, 10656182, 2568250, 653, codehint, interactive, 4151, 2896921, 2896931, 2016iwas, 20d, workshop, automation, jha, susmit, gulwani, sumit, tiwari, ashish, 224, 6344783, 719, 1806799, 1806833, 215, runfa, jiachen, han, shi, huang, gang, precise, 426, 3868, 416, 39th, jifeng, demarco, favio, clement, maxime, marcote, sebastian, lamelas, berre, daniel, 1939, 3520, 2560811, 2017itsen, 34x, 1811, 04211, mechtaev, sergey, jooyong, scalable, 701, 691, hoang, duong, thien, dawei, san, francisco, california, 781, 772, nam, jaechang, song, jaewoo, sunghun, written, 811, 802, 101586, dewey, vogt, 105, 10987936, 6227211, 34th, inquiry, 495, 2768, 2591062, 2591114, 6322, 492, staged, bergamo, italy, 178, 5987616, 2786811, 166, lahtinen, elimination, application, nokhbeh, zaeem, razieh, contract, alloy, lecture, notes, vol, 6183, 598, 14106, 14107, 2_27, 577, ecoop, object, oriented, pei, furia, carlo, nordio, wei, meyer, bertrand, 449, 53302638, 2312918, 2014arxiv1403, 1117p, 1117, 427, zeller, andreas, 312, 6091588, 3549, 2837614, 2837617, 298, annual, sigact, finding, 374, 1706697, 4244, 3453, 5070536, 364, 31st, shin, hwei, relifix, regressions, 482, 17125466, 471, gazzola, luca, micucci, daniela, mariani, leonardo, 57764123, 10281, 184798, 2755013, 2019itsen, 34g, harman, mark, 108, 9729944, 1735223, 1735248, technical, perspective, 28629846, 1409360, 1409381, utilizes, opensource, analyze, instantly, stack, kodezi, deepcode, integrates, public, bitbucket, gitlab, operates, purely, transformations, thus, requires, formatter, hack, ast, autofixe, relies, form, framework, implementing, jgenprog, npefix, nullpointerexception, qacrashfix, par, manually, defined, learn2fix, semi, extends, observed, who, works, take, integers, improved, introclass, higher, rsrepair, useful, knowledge, leakfix, codephage, across, although, seminal, studied, vulnerability, later, shows, active, various, these, demonstrating, unclear, ready, industrial, usage, now, papers, detailed, modify, median, size, four, lines, nine, alternative, focus, authors, defects, widely, evaluate, broader, 100, practitioners, cannot, high, ranking, acceptable, bound, hour, prerequisite, wider, adoption, converted, intractably, formulas, modifying, side, explosion, modifications, address, assuming, small, modification, enough, resulting, reduction, weak, cause, negative, eliminating, desirable, introducing, vulnerabilities, amplify, labelled, minimize, labelling, effort, gradually, classify, engages, uncertain, avoid, filter, done, propose, assess, sometimes, actually, known, refers, overfits, kinds, introduction, working, features, broken, after, poorly, tested, suffered, lot, 110, plausible, obtained, essence, activity, deductive, composed, edits, understand, showed, indicated, considered, sparse, vastly, abundant, see, discussion, below, fitness, function, failure, happens, searched, online, encountering, activates, feature, clicking, button, happen, background, ide, proactively, searches, problems, waiting, explicit, action, comparing, tend, accuracy, narrowed, scope, missing, deallocation, buffer, specialized, freely, interleaves, gathering, collecting, invoking, model, agnostic, developed, production, given, sample, engineers, like, future, besides, own, training, detected, ranks, them, seconds, presents, ranked, final, engineer, save, resources, ideally, fast, spent, nsequencer, copy, mechanism, handle, vocabulary, identifiers, line, prioritize, pre, train, codebases, strategies, sources, donor, sourceforge, converts, formula, allow, supplied, constraint, introduced, concept, forest, deal, combined, solving, consists, predefined, examples, inserting, constant, off, manipulate, coarse, earlier, operate, carry, simple, delete, replace, operations, deleting, fine, diverse, notably, deletion, operator, removing, reasonable, good, fault, improvement, block, compile, collect, technique, starts, key, behind, needed, codebase, empirically, quantifying, temporal, remains, controversial, nevertheless, results, promising, systematically, eight, against, full, whole, less, common, computation, cost, prohibitive, however, implicit, partial, longer, trigger, path, input, output, pairs, captured, divided, between, faulty, encapsulates, any, must, preserve, therefore, existence, major, previous, assertions, according, intervention, programmer, commonly, referred, typical, goal, eliminate, free, encyclopedia, item, printable, version, download, print, export, switch, legacy, shortened, url, permanent, what, here, general, actions, english, talk, हिन्दी, personal, special, pages, community, portal, help, contribute, events, navigation, jump, content,
Text of the page (random words):
atically generate correct patches to eliminate bugs in software programs without causing software regression 4 specification edit automatic bug fixing is made according to a specification of the expected behavior which can be for instance a formal specification or a test suite 5 a test suite the input output pairs specify the functionality of the program possibly captured in assertions can be used as a test oracle to drive the search this oracle can in fact be divided between the bug oracle that exposes the faulty behavior and the regression oracle which encapsulates the functionality any program repair method must preserve note that a test suite is typically incomplete and does not cover all possible cases therefore it is often possible for a validated patch to produce expected outputs for all inputs in the test suite but incorrect outputs for other inputs 6 the existence of such validated but incorrect patches is a major challenge for generate and validate techniques 6 recent successful automatic bug fixing techniques often rely on additional information other than the test suite such as information learned from previous human patches to further identify correct patches among validated patches 7 another way to specify the expected behavior is to use formal specifications 8 9 verification against full specifications that specify the whole program behavior including functionalities is less common because such specifications are typically not available in practice and the computation cost of such verification is prohibitive for specific classes of errors however implicit partial specifications are often available for example there are targeted bug fixing techniques validating that the patched program can no longer trigger overflow errors in the same execution path 10 techniques edit generate and validate edit generate and validate approaches compile and test each candidate patch to collect all validated patches that produce expected outputs for all inputs in the test suite 5 6 such a technique typically starts with a test suite of the program i e a set of test cases at least one of which exposes the bug 5 7 11 12 an early generate and validate bug fixing system is genprog 5 a key assumption behind genprog the redundancy assumption is that the ingredients needed to fix a bug already exist elsewhere in the codebase this assumption has been empirically validated by quantifying the temporal redundancy of code changes in open source projects 13 the effectiveness of generate and validate techniques remains controversial because they typically do not provide patch correctness guarantees 6 nevertheless the reported results of recent state of the art techniques are generally promising for example on systematically collected 69 real world bugs in eight large c software programs the state of the art bug fixing system prophet generates correct patches for 18 out of the 69 bugs 7 one way to generate candidate patches is to apply mutation operators on the original program mutation operators manipulate the original program potentially via its abstract syntax tree representation or a more coarse grained representation such as operating at the statement level or block level earlier genetic improvement approaches operate at the statement level and carry out simple delete replace operations such as deleting an existing statement or replacing an existing statement with another statement in the same source file 5 14 recent approaches use more fine grained operators at the abstract syntax tree level to generate more diverse set of candidate patches 12 notably the statement deletion mutation operator and more generally removing code is a reasonable repair strategy or at least a good fault localization strategy 15 another way to generate candidate patches consists of using fix templates fix templates are typically predefined changes for fixing specific classes of bugs 16 examples of fix templates include inserting a conditional statement to check whether the value of a variable is null to fix null pointer exception or changing an integer constant by one to fix off by one errors 16 synthesis based edit repair techniques exist that are based on symbolic execution for example semfix 17 uses symbolic execution to extract a repair constraint angelix 18 introduced the concept of angelic forest in order to deal with multiline patches nopol 19 uses angelic fix localization combined with smt solving to repair buggy conditional statements in java programs under certain assumptions it is possible to state the repair problem as a synthesis problem 20 semfix 17 uses component based synthesis 21 dynamoth 22 uses dynamic synthesis 23 s3 24 is based on syntax guided synthesis 25 searchrepair 26 converts potential patches into an smt formula and queries candidate patches that allow the patched program to pass all supplied test cases data driven edit machine learning techniques can improve the effectiveness of automatic bug fixing systems 7 one example of such techniques learns from past successful patches from human developers collected from open source repositories in github and sourceforge 7 it then use the learned information to recognize and prioritize potentially correct patches among all generated candidate patches 7 recent neural machine translation approaches such as cure pre train programming language models on large codebases and use code aware search strategies to improve patch generation quality 27 alternatively patches can be directly mined from existing sources example approaches include mining patches from donor applications 10 or from qa web sites 28 getafix 29 is a language agnostic approach developed and used in production at facebook given a sample of code commits where engineers fixed a certain kind of bug it learns human like fix patterns that apply to future bugs of the same kind besides using facebook s own code repositories as training data getafix learnt some fixes from open source java repositories when new bugs get detected getafix applies its previously learnt patterns to produce candidate fixes and ranks them within seconds it presents only the top ranked fix for final validation by tools or an engineer in order to save resources and ideally be so fast that no human time was spent on fixing the same bug yet n nsequencer 30 applies sequence to sequence learning directly to program repair trained on source code patches mined from open source repositories it uses a copy mechanism to handle the large vocabulary of source code identifiers and generates single line fixes end to end repairagent 31 is an autonomous large language model based agent for program repair the llm can freely interleaves gathering bug information collecting repair ingredients and validating fixes by invoking a set of tools template based repair edit for specific classes of errors targeted automatic bug fixing techniques use specialized templates null pointer exception repair 32 33 16 with insertion of a conditional statement to check whether the value of a variable is null integer overflow repair 10 buffer overflow repair 10 memory leak repair 34 with automated insertion of missing memory deallocation statements comparing to generate and validate techniques template based techniques tend to have better bug fixing accuracy but a much narrowed scope 6 34 use edit there are multiple uses of automatic bug fixing in a development environment when encountering a bug the developer activates a feature to search for a patch for instance by clicking on a button this search can also happen in the background when the ide proactively searches for solutions to potential problems without waiting for explicit action from the developer 35 at runtime when a failure happens at runtime a binary patch can be searched for and applied online an example of such a repair system is clearview 36 which does repair on x86 code with x86 binary patches search space edit in essence automatic bug fixing is a search activity whether deductive based or heuristic based 37 the search space of automatic bug fixing is composed of all edits that can be possibly made to a program 38 there have been studies to understand the structure of this search space qi et al 39 showed that the original fitness function of genprog is not better than random search to drive the search long et al s 40 study indicated that correct patches can be considered as sparse in the search space and that incorrect overfitting patches are vastly more abundant see also discussion about overfitting below overfitting edit sometimes in test suite based program repair tools generate patches that pass the test suite yet are actually incorrect this is known as the overfitting problem 41 overfitting in this context refers to the fact that the patch overfits to the test inputs there are different kinds of overfitting incomplete fixing means that only some buggy inputs are fixed regression introduction means some previously working features are broken after the patch because they were poorly tested early prototypes for automatic repair suffered a lot from overfitting on the manybugs c benchmark qi et al 6 reported that 104 110 of plausible genprog patches were overfitting in the context of synthesis based repair le et al 42 obtained more than 80 of overfitting patches one way to avoid overfitting is to filter out the generated patches this can be done based on dynamic analysis 43 alternatively tian et al propose heuristic approaches to assess patch correctness 44 45 limitations of automatic bug fixing edit automatic bug fixing techniques that rely on a test suite do not provide patch correctness guarantees because the test suite is incomplete and does not cover all cases 6 a weak test suite may cause generate and validate techniques to produce validated but incorrect patches that have negative effects such as eliminating desirable functionalities causing memory leaks and introducing security vulnerabilities 6 one possible approach is to amplify the failing test suite by automatically generating further test cases that are then labelled as passing or failing to minimize the human labelling effort an automatic test oracle can be trained that gradually learns to automatically classify test cases as passing or failing and only engages the bug reporting user for uncertain cases 46 a limitation of generate and validate repair systems is the search space explosion 40 for a program there are a large number of statements to change and for each statement there are a large number of possible modifications state of the art systems address this problem by assuming that a small modification is enough for fixing a bug resulting in a search space reduction 47 the limitation of approaches based on symbolic analysis 17 18 is that real world programs are often converted to intractably large formulas especially for modifying statements with side effects a broader limitation is developer trust a survey of more than 100 software practitioners found that existing test suite based repair tools cannot produce high quality patches within a top 10 ranking and an acceptable time bound of one hour and that developer trust is a prerequisite for wider adoption of automatic program repair 48 benchmarks edit benchmarks of bugs typically focus on one specific programming language 49 in c the manybugs benchmark collected by genprog authors contains 69 real world defects and it is widely used to evaluate many other bug fixing tools for c 14 7 12 18 in java the main benchmark is defects4j 50 now extensively used in most research papers on program repair for java a detailed study of 395 defects4j patches found that 92 modify a single file the median patch size is four lines and nine repair patterns cover 95 of the bugs 51 52 53 alternative benchmarks exist such as the quixbugs benchmark 54 which contains original bugs and has been used in program repair research 55 other benchmarks of java bugs include bugs jar 56 based on past commits example tools edit automatic bug fixing is an active research topic in computer science there are many implementations of various bug fixing techniques especially for c and java programs note that most of these implementations are research prototypes for demonstrating their techniques i e it is unclear whether their current implementations are ready for industrial usage or not 57 c edit clearview 36 a generate and validate tool of generating binary patches for deployed systems it is evaluated on 10 security vulnerability cases a later study shows that it generates correct patches for at least 4 of the 10 cases 6 genprog 5 14 a seminal generate and validate bug fixing tool it has been extensively studied in the context of the manybugs benchmark semfix 17 the first solver based bug fixing tool for c codephage 10 the first bug fixing tool that directly transfer code across programs to generate patch for c program note that although it generates c patches it can extract code from binary programs without source code 10 leakfix 34 a tool that automatically fixes memory leaks in c programs prophet 7 the first generate and validate tool that uses machine learning techniques to learn useful knowledge from past human patches to recognize correct patches it is evaluated on the same benchmark as genprog and generate correct patches i e equivalent to human patches for 18 out of 69 cases 7 searchrepair 26 a tool for replacing buggy code using snippets of code from elsewhere it is evaluated on the introclass benchmark 58 and generates much higher quality patches on that benchmark than genprog rsrepair and ae angelix 18 an improved solver based bug fixing tool it is evaluated on the genprog benchmark for 10 out of the 69 cases it generate patches that is equivalent to human patches learn2fix 46 the first human in the loop semi automatic repair tool extends genprog to learn the condition under which a semantic bug is observed by systematic queries to the user who is reporting the bug only works for programs that take and produce integers java edit par 16 a generate and validate tool that uses a set of manually defined fix templates qacrashfix 28 a tool that fixes java crash bugs by mining fixes from q a web site arja 59 a repair tool for java based on multi objective genetic programming npefix 60 an automatic repair tool for nullpointerexception in java available on github astor 61 a generate and validate program repair framework for java implementing multiple repair approaches including jgenprog other languages edit autofixe 8 a bug fixing tool for eiffel language it relies the contracts i e a form of formal specification in eiffel programs to validate generated patches getafix 29 operates purely on ast transformations and thus requires only a parser and formatter at facebook it has been applied to hack java and objective c proprietary edit deepcode integrates public and private github gitlab and bitbucket repositories to identify code fixes and improve s...
|