--- _id: '941' abstract: - lang: eng text: 'Recently there has been a proliferation of automated program repair (APR) techniques, targeting various programming languages. Such techniques can be generally classified into two families: syntactic- and semantics-based. Semantics-based APR, on which we focus, typically uses symbolic execution to infer semantic constraints and then program synthesis to construct repairs conforming to them. While syntactic-based APR techniques have been shown successful on bugs in real-world programs written in both C and Java, semantics-based APR techniques mostly target C programs. This leaves empirical comparisons of the APR families not fully explored, and developers without a Java-based semantics APR technique. We present JFix, a semantics-based APR framework that targets Java, and an associated Eclipse plugin. JFix is implemented atop Symbolic PathFinder, a well-known symbolic execution engine for Java programs. It extends one particular APR technique (Angelix), and is designed to be sufficiently generic to support a variety of such techniques. We demonstrate that semantics-based APR can indeed efficiently and effectively repair a variety of classes of bugs in large real-world Java programs. This supports our claim that the framework can both support developers seeking semantics-based repair of bugs in Java programs, as well as enable larger scale empirical studies comparing syntactic- and semantics-based APR targeting Java. The demonstration of our tool is available via the project website at: https://xuanbachle.github.io/semanticsrepair/ ' author: - first_name: Xuan full_name: Le, Xuan last_name: Le - first_name: Duc Hiep full_name: Chu, Duc Hiep id: 3598E630-F248-11E8-B48F-1D18A9856A87 last_name: Chu - first_name: David full_name: Lo, David last_name: Lo - first_name: Claire full_name: Le Goues, Claire last_name: Le Goues - first_name: Willem full_name: Visser, Willem last_name: Visser citation: ama: 'Le X, Chu DH, Lo D, Le Goues C, Visser W. JFIX: Semantics-based repair of Java programs via symbolic  PathFinder. In: Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis. ACM; 2017:376-379. doi:10.1145/3092703.3098225' apa: 'Le, X., Chu, D. H., Lo, D., Le Goues, C., & Visser, W. (2017). JFIX: Semantics-based repair of Java programs via symbolic  PathFinder. In Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis (pp. 376–379). Santa Barbara, CA, United States: ACM. https://doi.org/10.1145/3092703.3098225' chicago: 'Le, Xuan, Duc Hiep Chu, David Lo, Claire Le Goues, and Willem Visser. “JFIX: Semantics-Based Repair of Java Programs via Symbolic  PathFinder.” In Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis, 376–79. ACM, 2017. https://doi.org/10.1145/3092703.3098225.' ieee: 'X. Le, D. H. Chu, D. Lo, C. Le Goues, and W. Visser, “JFIX: Semantics-based repair of Java programs via symbolic  PathFinder,” in Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis, Santa Barbara, CA, United States, 2017, pp. 376–379.' ista: 'Le X, Chu DH, Lo D, Le Goues C, Visser W. 2017. JFIX: Semantics-based repair of Java programs via symbolic  PathFinder. Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis. ISSTA: International Symposium on Software Testing and Analysis, 376–379.' mla: 'Le, Xuan, et al. “JFIX: Semantics-Based Repair of Java Programs via Symbolic  PathFinder.” Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis, ACM, 2017, pp. 376–79, doi:10.1145/3092703.3098225.' short: X. Le, D.H. Chu, D. Lo, C. Le Goues, W. Visser, in:, Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis, ACM, 2017, pp. 376–379. conference: end_date: 2017-07-14 location: Santa Barbara, CA, United States name: 'ISSTA: International Symposium on Software Testing and Analysis' start_date: 2017-07-10 date_created: 2018-12-11T11:49:19Z date_published: 2017-07-10T00:00:00Z date_updated: 2021-01-12T08:22:05Z day: '10' department: - _id: ToHe doi: 10.1145/3092703.3098225 language: - iso: eng month: '07' oa_version: None page: '376 - 379 ' project: - _id: 25832EC2-B435-11E9-9278-68D0E5697425 call_identifier: FWF grant_number: S 11407_N23 name: Rigorous Systems Engineering - _id: 25F42A32-B435-11E9-9278-68D0E5697425 call_identifier: FWF grant_number: Z211 name: The Wittgenstein Prize publication: Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis publication_status: published publisher: ACM publist_id: '6478' quality_controlled: '1' scopus_import: 1 status: public title: 'JFIX: Semantics-based repair of Java programs via symbolic PathFinder' type: conference user_id: 3E5EF7F0-F248-11E8-B48F-1D18A9856A87 year: '2017' ... --- _id: '962' abstract: - lang: eng text: 'We present a new algorithm for model counting of a class of string constraints. In addition to the classic operation of concatenation, our class includes some recursively defined operations such as Kleene closure, and replacement of substrings. Additionally, our class also includes length constraints on the string expressions, which means, by requiring reasoning about numbers, that we face a multi-sorted logic. In the end, our string constraints are motivated by their use in programming for web applications. Our algorithm comprises two novel features: the ability to use a technique of (1) partial derivatives for constraints that are already in a solved form, i.e. a form where its (string) satisfiability is clearly displayed, and (2) non-progression, where cyclic reasoning in the reduction process may be terminated (thus allowing for the algorithm to look elsewhere). Finally, we experimentally compare our model counter with two recent works on model counting of similar constraints, SMC [18] and ABC [5], to demonstrate its superior performance.' alternative_title: - LNCS article_processing_charge: No author: - first_name: Minh full_name: Trinh, Minh last_name: Trinh - first_name: Duc Hiep full_name: Chu, Duc Hiep id: 3598E630-F248-11E8-B48F-1D18A9856A87 last_name: Chu - first_name: Joxan full_name: Jaffar, Joxan last_name: Jaffar citation: ama: 'Trinh M, Chu DH, Jaffar J. Model counting for recursively-defined strings. In: Majumdar R, Kunčak V, eds. Vol 10427. Springer; 2017:399-418. doi:10.1007/978-3-319-63390-9_21' apa: 'Trinh, M., Chu, D. H., & Jaffar, J. (2017). Model counting for recursively-defined strings. In R. Majumdar & V. Kunčak (Eds.) (Vol. 10427, pp. 399–418). Presented at the CAV: Computer Aided Verification, Heidelberg, Germany: Springer. https://doi.org/10.1007/978-3-319-63390-9_21' chicago: Trinh, Minh, Duc Hiep Chu, and Joxan Jaffar. “Model Counting for Recursively-Defined Strings.” edited by Rupak Majumdar and Viktor Kunčak, 10427:399–418. Springer, 2017. https://doi.org/10.1007/978-3-319-63390-9_21. ieee: 'M. Trinh, D. H. Chu, and J. Jaffar, “Model counting for recursively-defined strings,” presented at the CAV: Computer Aided Verification, Heidelberg, Germany, 2017, vol. 10427, pp. 399–418.' ista: 'Trinh M, Chu DH, Jaffar J. 2017. Model counting for recursively-defined strings. CAV: Computer Aided Verification, LNCS, vol. 10427, 399–418.' mla: Trinh, Minh, et al. Model Counting for Recursively-Defined Strings. Edited by Rupak Majumdar and Viktor Kunčak, vol. 10427, Springer, 2017, pp. 399–418, doi:10.1007/978-3-319-63390-9_21. short: M. Trinh, D.H. Chu, J. Jaffar, in:, R. Majumdar, V. Kunčak (Eds.), Springer, 2017, pp. 399–418. conference: end_date: 2017-07-28 location: Heidelberg, Germany name: 'CAV: Computer Aided Verification' start_date: 2017-07-24 date_created: 2018-12-11T11:49:26Z date_published: 2017-01-01T00:00:00Z date_updated: 2023-09-22T09:58:02Z day: '01' department: - _id: ToHe doi: 10.1007/978-3-319-63390-9_21 editor: - first_name: Rupak full_name: Majumdar, Rupak last_name: Majumdar - first_name: Viktor full_name: Kunčak, Viktor last_name: Kunčak external_id: isi: - '000431900900021' intvolume: ' 10427' isi: 1 language: - iso: eng month: '01' oa_version: None page: 399 - 418 project: - _id: 25F5A88A-B435-11E9-9278-68D0E5697425 call_identifier: FWF grant_number: S11402-N23 name: Moderne Concurrency Paradigms - _id: 25F42A32-B435-11E9-9278-68D0E5697425 call_identifier: FWF grant_number: Z211 name: The Wittgenstein Prize publication_identifier: issn: - '03029743' publication_status: published publisher: Springer publist_id: '6443' quality_controlled: '1' scopus_import: '1' status: public title: Model counting for recursively-defined strings type: conference user_id: c635000d-4b10-11ee-a964-aac5a93f6ac1 volume: 10427 year: '2017' ... --- _id: '942' abstract: - lang: eng text: 'A notable class of techniques for automatic program repair is known as semantics-based. Such techniques, e.g., Angelix, infer semantic specifications via symbolic execution, and then use program synthesis to construct new code that satisfies those inferred specifications. However, the obtained specifications are naturally incomplete, leaving the synthesis engine with a difficult task of synthesizing a general solution from a sparse space of many possible solutions that are consistent with the provided specifications but that do not necessarily generalize. We present S3, a new repair synthesis engine that leverages programming-by-examples methodology to synthesize high-quality bug repairs. The novelty in S3 that allows it to tackle the sparse search space to create more general repairs is three-fold: (1) A systematic way to customize and constrain the syntactic search space via a domain-specific language, (2) An efficient enumeration-based search strategy over the constrained search space, and (3) A number of ranking features based on measures of the syntactic and semantic distances between candidate solutions and the original buggy program. We compare S3’s repair effectiveness with state-of-the-art synthesis engines Angelix, Enumerative, and CVC4. S3 can successfully and correctly fix at least three times more bugs than the best baseline on datasets of 52 bugs in small programs, and 100 bugs in real-world large programs. ' article_processing_charge: No author: - first_name: Xuan full_name: Le, Xuan last_name: Le - first_name: Duc Hiep full_name: Chu, Duc Hiep id: 3598E630-F248-11E8-B48F-1D18A9856A87 last_name: Chu - first_name: David full_name: Lo, David last_name: Lo - first_name: Claire full_name: Le Goues, Claire last_name: Le Goues - first_name: Willem full_name: Visser, Willem last_name: Visser citation: ama: 'Le X, Chu DH, Lo D, Le Goues C, Visser W. S3: Syntax- and semantic-guided repair synthesis via programming by examples. In: Vol F130154. ACM; 2017:593-604. doi:10.1145/3106237.3106309' apa: 'Le, X., Chu, D. H., Lo, D., Le Goues, C., & Visser, W. (2017). S3: Syntax- and semantic-guided repair synthesis via programming by examples (Vol. F130154, pp. 593–604). Presented at the FSE: Foundations of Software Engineering, Paderborn, Germany: ACM. https://doi.org/10.1145/3106237.3106309' chicago: 'Le, Xuan, Duc Hiep Chu, David Lo, Claire Le Goues, and Willem Visser. “S3: Syntax- and Semantic-Guided Repair Synthesis via Programming by Examples,” F130154:593–604. ACM, 2017. https://doi.org/10.1145/3106237.3106309.' ieee: 'X. Le, D. H. Chu, D. Lo, C. Le Goues, and W. Visser, “S3: Syntax- and semantic-guided repair synthesis via programming by examples,” presented at the FSE: Foundations of Software Engineering, Paderborn, Germany, 2017, vol. F130154, pp. 593–604.' ista: 'Le X, Chu DH, Lo D, Le Goues C, Visser W. 2017. S3: Syntax- and semantic-guided repair synthesis via programming by examples. FSE: Foundations of Software Engineering vol. F130154, 593–604.' mla: 'Le, Xuan, et al. S3: Syntax- and Semantic-Guided Repair Synthesis via Programming by Examples. Vol. F130154, ACM, 2017, pp. 593–604, doi:10.1145/3106237.3106309.' short: X. Le, D.H. Chu, D. Lo, C. Le Goues, W. Visser, in:, ACM, 2017, pp. 593–604. conference: end_date: 2017-09-08 location: Paderborn, Germany name: 'FSE: Foundations of Software Engineering' start_date: 2017-09-04 date_created: 2018-12-11T11:49:19Z date_published: 2017-09-01T00:00:00Z date_updated: 2023-09-26T15:38:36Z day: '01' department: - _id: ToHe doi: 10.1145/3106237.3106309 external_id: isi: - '000414279300055' isi: 1 language: - iso: eng month: '09' oa_version: None page: 593 - 604 project: - _id: 25F5A88A-B435-11E9-9278-68D0E5697425 call_identifier: FWF grant_number: S11402-N23 name: Moderne Concurrency Paradigms - _id: 25F42A32-B435-11E9-9278-68D0E5697425 call_identifier: FWF grant_number: Z211 name: The Wittgenstein Prize publication_identifier: isbn: - 978-145035105-8 publication_status: published publisher: ACM publist_id: '6477' quality_controlled: '1' scopus_import: '1' status: public title: 'S3: Syntax- and semantic-guided repair synthesis via programming by examples' type: conference user_id: c635000d-4b10-11ee-a964-aac5a93f6ac1 volume: F130154 year: '2017' ...