{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/graph-based-self-supervised-program-repair","title":"Graph-based, Self-Supervised Program Repair from Diagnostic Feedback","arxiv_id":"2005.10636","date":"2020-05-20","proceeding":"ICML 2020 1","authors":["Michihiro Yasunaga","Percy Liang"],"abstract":"We consider the problem of learning to repair programs from diagnostic feedback (e.g., compiler error messages). Program repair is challenging for two reasons: First, it requires reasoning and tracking symbols across source code and diagnostic feedback. Second, labeled datasets available for program repair are relatively small. In this work, we propose novel solutions to these two challenges. First, we introduce a program-feedback graph, which connects symbols relevant to program repair in source code and diagnostic feedback, and then apply a graph neural network on top to model the reasoning process. Second, we present a self-supervised learning paradigm for program repair that leverages unlabeled programs available online to create a large amount of extra program repair examples, which we use to pre-train our models. We evaluate our proposed approach on two applications: correcting introductory programming assignments (DeepFix dataset) and correcting the outputs of program synthesis (SPoC dataset). Our final system, DrRepair, significantly outperforms prior work, achieving 68.2% full repair rate on DeepFix (+22.9% over the prior best), and 48.4% synthesis success rate on SPoC (+3.7% over the prior best).","url_abs":"https://arxiv.org/abs/2005.10636v2","url_pdf":"https://arxiv.org/pdf/2005.10636v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"graph-based-self-supervised-program-repair","repo_url":"https://github.com/michiyasunaga/DrRepair","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"graph-based-self-supervised-program-repair","repo_url":"https://worksheets.codalab.org/worksheets/0x01838644724a433c932bef4cb5c42fbd","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"none","reach":null}],"tasks":[{"task_slug":"code-generation","task_name":"Code Generation"},{"task_slug":"diagnostic","task_name":"Diagnostic"},{"task_slug":"graph-learning","task_name":"Graph Learning"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"program-repair","task_name":"Program Repair"},{"task_slug":"program-synthesis","task_name":"Program Synthesis"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[{"method_slug":"absolute-position-encodings","method_name":"Absolute Position Encodings"},{"method_slug":"gat","method_name":"GAT"},{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"position-wise-feed-forward-layer","method_name":"Position-Wise Feed-Forward Layer"},{"method_slug":"repair","method_name":"Repair"},{"method_slug":"transformer","method_name":"Transformer"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/program-repair-on-deepfix","task":"Program Repair","dataset":"DeepFix","model":"DrRepair","rank_in_archive_order":2,"of":4,"metrics":{"Average Success Rate":"68.2"},"uses_additional_data":false},{"leaderboard":"/sota/program-synthesis-on-spoc-testp","task":"Program Synthesis","dataset":"SPoC TestP","model":"DrRepair","rank_in_archive_order":1,"of":2,"metrics":{"Success rate @budget 100":"38.5"},"uses_additional_data":false},{"leaderboard":"/sota/program-synthesis-on-spoc-testw","task":"Program Synthesis","dataset":"SPoC TestW","model":"DrRepair","rank_in_archive_order":1,"of":2,"metrics":{"Success rate @budget 100":"57.0"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2005.10636","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2005.10636"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://worksheets.codalab.org/worksheets/0x01838644724a433c932bef4cb5c42fbd","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/michiyasunaga/DrRepair","reach":null}],"summary":{"ran":2,"ran_honours":1,"ran_draft_wrong":1,"unverified":2},"by_repo_kind":{"official":{"samples":6,"ran":4,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"995919c0e59b6ea0","entry":"MultiHeadedAttention","repo":"michiyasunaga/DrRepair","repo_kind":"official","path":"model/repairer/model/attention_zoo.py","file_url":"https://github.com/michiyasunaga/DrRepair/blob/HEAD/model/repairer/model/attention_zoo.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"995919c0e59b6ea0"}},{"code_sha256_prefix":"675f1cb139ebf772","entry":"PositionwiseFeedForward","repo":"michiyasunaga/DrRepair","repo_kind":"official","path":"model/repairer/model/attention_zoo.py","file_url":"https://github.com/michiyasunaga/DrRepair/blob/HEAD/model/repairer/model/attention_zoo.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"675f1cb139ebf772"}},{"code_sha256_prefix":"0732a6087209857f","entry":"generate_relative_positions_matrix","repo":"michiyasunaga/DrRepair","repo_kind":"official","path":"model/repairer/model/attention_zoo.py","file_url":"https://github.com/michiyasunaga/DrRepair/blob/HEAD/model/repairer/model/attention_zoo.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0732a6087209857f"}},{"code_sha256_prefix":"5829c26d2866a681","entry":"prepare_lines_print","repo":"michiyasunaga/DrRepair","repo_kind":"official","path":"evaluation/deepfix/test_deepfix.py","file_url":"https://github.com/michiyasunaga/DrRepair/blob/HEAD/evaluation/deepfix/test_deepfix.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5829c26d2866a681"}},{"code_sha256_prefix":"0839788f852dacce","entry":"GraphAttentionEncoderFlowLayer","repo":"michiyasunaga/DrRepair","repo_kind":"official","path":"model/repairer/model/attention_zoo.py","file_url":"https://github.com/michiyasunaga/DrRepair/blob/HEAD/model/repairer/model/attention_zoo.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0839788f852dacce"}},{"code_sha256_prefix":"2b837c9962d604d7","entry":"relative_matmul","repo":"michiyasunaga/DrRepair","repo_kind":"official","path":"model/repairer/model/attention_zoo.py","file_url":"https://github.com/michiyasunaga/DrRepair/blob/HEAD/model/repairer/model/attention_zoo.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2b837c9962d604d7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}