{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,3,26]],"date-time":"2025-03-26T16:18:09Z","timestamp":1743005889609,"version":"3.40.3"},"publisher-location":"Cham","reference-count":14,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030374860"},{"type":"electronic","value":"9783030374877"}],"license":[{"start":{"date-parts":[[2019,1,1]],"date-time":"2019-01-01T00:00:00Z","timestamp":1546300800000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2019]]},"DOI":"10.1007\/978-3-030-37487-7_12","type":"book-chapter","created":{"date-parts":[[2019,12,13]],"date-time":"2019-12-13T04:22:10Z","timestamp":1576210930000},"page":"140-155","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":3,"title":["Nobrainer: An Example-Driven Framework for C\/C++ Code Transformations"],"prefix":"10.1007","author":[{"given":"Valeriy","family":"Savchenko","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Konstantin","family":"Sorokin","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Georgiy","family":"Pankratenko","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Sergey","family":"Markov","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Alexander","family":"Spiridonov","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ilia","family":"Alexandrov","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Alexander","family":"Volkov","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Kwangwon","family":"Sun","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2019,12,16]]},"reference":[{"key":"12_CR1","unstructured":"Clang documentation: Matching the clang AST. \nhttps:\/\/clang.llvm.org\/docs\/LibASTMatchers.html"},{"key":"12_CR2","doi-asserted-by":"publisher","unstructured":"Brown, N., et al.: Managing technical debt in software-reliant systems. In: Proceedings of the FSE\/SDP Workshop on Future of Software Engineering Research, FoSER 2010, pp. 47\u201352. ACM, New York (2010). \nhttps:\/\/doi.org\/10.1145\/1882362.1882373\n\n, \nhttp:\/\/doi.acm.org\/10.1145\/1882362.1882373","DOI":"10.1145\/1882362.1882373"},{"issue":"2","key":"12_CR3","doi-asserted-by":"publisher","first-page":"29","DOI":"10.1145\/157710.157715","volume":"4","author":"W Cunningham","year":"1992","unstructured":"Cunningham, W.: The WyCash portfolio management system. SIGPLAN OOPS Mess. 4(2), 29\u201330 (1992). \nhttps:\/\/doi.org\/10.1145\/157710.157715\n\n. \nhttp:\/\/doi.acm.org\/10.1145\/157710.157715","journal-title":"SIGPLAN OOPS Mess."},{"key":"12_CR4","volume-title":"Refactoring: Improving the Design of Existing Code","author":"M Fowler","year":"1999","unstructured":"Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, Boston (1999)"},{"key":"12_CR5","doi-asserted-by":"publisher","first-page":"35","DOI":"10.1016\/j.entcs.2005.04.037","volume":"141","author":"DG Waddington","year":"2007","unstructured":"Waddington, D.G., Yao, B.: High-fidelity C\/C++ code transformation. Electron. Notes Theoret. Comput. Sci. 141, 35\u201356 (2007). \nhttps:\/\/doi.org\/10.1016\/j.entcs.2005.04.037","journal-title":"Electron. Notes Theoret. Comput. Sci."},{"key":"12_CR6","doi-asserted-by":"crossref","unstructured":"Graf, E., Zgraggen, G., Sommerlad, P.: Refactoring support for the C++ development tooling. In: OOPSLA Companion (2007)","DOI":"10.1145\/1297846.1297885"},{"key":"12_CR7","doi-asserted-by":"publisher","unstructured":"Lahoda, J., Be\u010di\u010dka, J., Ruijs, R.B.: Custom declarative refactoring in NetBeans: tool demonstration. In: Proceedings of the Fifth Workshop on Refactoring Tools, WRT 2012, pp. 63\u201364. ACM, New York (2012). \nhttps:\/\/doi.org\/10.1145\/2328876.2328886\n\n, \nhttp:\/\/doi.acm.org\/10.1145\/2328876.2328886","DOI":"10.1145\/2328876.2328886"},{"issue":"10","key":"12_CR8","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/2544173.2509515","volume":"48","author":"LA Meyerovich","year":"2013","unstructured":"Meyerovich, L.A., Rabkin, A.S.: Empirical analysis of programming language adoption. SIGPLAN Not. 48(10), 1\u201318 (2013). \nhttps:\/\/doi.org\/10.1145\/2544173.2509515\n\n. \nhttp:\/\/doi.acm.org\/10.1145\/2544173.2509515","journal-title":"SIGPLAN Not."},{"key":"12_CR9","unstructured":"Murphy-Hill, E.R., Parnin, C., Black, A.P.: How we refactor, and how we know it. In: ICSE, pp. 287\u2013297. IEEE (2009). \nhttp:\/\/dblp.uni-trier.de\/db\/conf\/icse\/icse2009.html#Murphy-HillPB09"},{"key":"12_CR10","doi-asserted-by":"publisher","unstructured":"Pinto, G.H., Kamei, F.: What programmers say about refactoring tools?: An empirical investigation of stack overflow. In: Proceedings of the 2013 ACM Workshop on Workshop on Refactoring Tools. WRT 2013, pp. 33\u201336. ACM, New York (2013). \nhttps:\/\/doi.org\/10.1145\/2541348.2541357\n\n, \nhttp:\/\/doi.acm.org\/10.1145\/2541348.2541357","DOI":"10.1145\/2541348.2541357"},{"issue":"10","key":"12_CR11","doi-asserted-by":"publisher","first-page":"91","DOI":"10.1145\/3126905","volume":"60","author":"B Ray","year":"2017","unstructured":"Ray, B., Posnett, D., Devanbu, P., Filkov, V.: A large-scale study of programming languages and code quality in github. Commun. ACM 60(10), 91\u2013100 (2017). \nhttps:\/\/doi.org\/10.1145\/3126905\n\n. \nhttp:\/\/doi.acm.org\/10.1145\/3126905","journal-title":"Commun. ACM"},{"issue":"6","key":"12_CR12","doi-asserted-by":"publisher","first-page":"36","DOI":"10.1145\/2830719.2830739","volume":"40","author":"W Tracz","year":"2015","unstructured":"Tracz, W.: Refactoring for software design smells: managing technical debt by Girish Suryanarayana, Ganesh Samarthyam, and Tushar Sharma. ACM SIGSOFT Softw. Eng. Notes 40(6), 36 (2015). \nhttp:\/\/dblp.uni-trier.de\/db\/journals\/sigsoft\/sigsoft40.html#Tracz15a","journal-title":"ACM SIGSOFT Softw. Eng. Notes"},{"key":"12_CR13","doi-asserted-by":"crossref","unstructured":"Wasserman, L.: Scalable, example-based refactorings with refaster. In: Proceedings of the 2013 ACM Workshop on Workshop on Refactoring Tools, pp. 25\u201328. ACM (2013)","DOI":"10.1145\/2541348.2541355"},{"key":"12_CR14","doi-asserted-by":"crossref","unstructured":"Wright, H., Jasper, D., Klimek, M., Carruth, C., Wan, Z.: Large-scale automated refactoring using ClangMR. In: Proceedings of the 29th International Conference on Software Maintenance (2013)","DOI":"10.1109\/ICSM.2013.93"}],"container-title":["Lecture Notes in Computer Science","Perspectives of System Informatics"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-37487-7_12","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,12,15]],"date-time":"2019-12-15T19:03:58Z","timestamp":1576436638000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-37487-7_12"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019]]},"ISBN":["9783030374860","9783030374877"],"references-count":14,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-37487-7_12","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2019]]},"assertion":[{"value":"16 December 2019","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"PSI","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Andrei Ershov Memorial Conference on Perspectives of System Informatics","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Novosibirsk","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Russia","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2019","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2 July 2019","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"5 July 2019","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"12","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"ershov2019","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/psi.nsc.ru\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}