TY - CHAP AU - Brunner, Tibor AU - Cserép, Máté AU - Fekete, Anett AU - Mészáros, Mónika AU - Porkoláb, Zoltán ED - Porkoláb, Zoltán ED - Zsók, Viktória TI - Towards Better Tool Support for Code Comprehension T2 - Composability, Comprehensibility and Correctness of Working Software PB - Springer International Publishing CY - Cham SN - 9783031428333 T3 - Lecture Notes in Computer Science, ISSN 0302-9743 ; 11950. PY - 2023 SP - 165 EP - 201 PG - 37 DO - 10.1007/978-3-031-42833-3_6 UR - https://m2.mtmt.hu/api/publication/34205378 ID - 34205378 AB - In software development, bug fixing and feature development requires a thorough understanding of all details and consequences of the planned changes. For long-existing large software systems, the code-base has been developed and maintained for decades by fluctuating teams, thus original intentions are lost, the documentation is untrustworthy or missing. Most times, the only reliable information is the code itself. Source code comprehension of such large software is an essential, but usually very challenging task. The comprehension process and approach of existing systems is fundamentally different from writing new software, and the usual development tools provide poor support in this area. Throughout the years, different tools have been developed with various complexity and feature set for code comprehension but none of them fulfilled all specific requirements yet. In this paper we discuss the most accepted models for code comprehension, the required feature set for tools supporting the comprehension process and the various approaches of existing solutions. We present CodeCompass – an open source LLVM/Clang based tool to help understanding large legacy software systems – in detail to analyse the required interface, possible design choices and implementation considerations. Based on the LLVM/Clang compiler infrastructure, CodeCompass gives exact information on complex C/C++ language elements such as inheritance, overloading, variable usage, possible function pointer and virtual function calls etc. These are all features for which various existing tools provide only partial support. Although CodeCompass supports mainly the C and C++ programming languages, it has a restricted support for Java and Python languages as well, therefore our investigation is language-independent. LA - English DB - MTMT ER - TY - CHAP AU - Mészáros, Mónika AU - Cserép, Máté AU - Fekete, Anett ED - Marko, Koricic ED - Zeljko, Butkovic ED - Karolj, Skala ED - Zeljka, Car ED - Marina, Cicin-Sain ED - Snjezana, Babic ED - Vlado, Sruk ED - Dejan, Skvorc ED - Slobodan, Ribaric ED - Stjepan, Gros ED - Boris, Vrdoljak ED - Mladen, Mauher ED - Edvard, Tijan ED - Predrag, Pale ED - Darko, Huljenic ED - Tihana, Galinac Grbac ED - Matej, Janjic TI - Delivering comprehension features into source code editors through LSP T2 - 2019 42nd International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO) PB - Croatian Society for Information and Communication Technology Electronics and Microelectronics (MIPRO) CY - Rijeka SN - 9781538692967 PY - 2019 SP - 1581 EP - 1586 PG - 6 DO - 10.23919/MIPRO.2019.8756695 UR - https://m2.mtmt.hu/api/publication/30738594 ID - 30738594 AB - The maintenance of large, legacy software often results in higher development time and cost due to increasing size and complexity of the codebase and its documentation, their continuously eroding quality and fluctuation among developers. Code comprehension tools are designed to tackle this issue by providing various textual information, visualization views and source code metrics on multiple abstraction levels. These tools usually process not only the codebase, but also the build information, the version control repository and other available information sources. Meanwhile source code editors and integrated development environments (IDEs) are not performing well in the field of code comprehension as they are optimized for writing new code, not for effective browsing. This can easily result in frequent switching between environments during development, hindering effective programming and raising development cost. Language Server Protocol (LSP) is an open-source protocol to connect source code editors with servers that provide language-specific features. In this research we analyze how LSP can be utilized to improve the code comprehension experience inside code editors by integrating the features of such tools through remote procedure calls. As a prototype solution we showcase the integration of two open-source applications: Visual Studio Code and the CodeCompass code comprehension tool. LA - English DB - MTMT ER - TY - CHAP AU - Mészáros, Mónika AU - Horváth, Zoltán AU - Kovács, Andrea Erika AU - Leskó, Dániel ED - Pop, Horia ED - Antal, Bege TI - Layered representation of source code T2 - MaCS 2010 PB - Novadat CY - Győr SN - 9789639056381 PY - 2011 SP - 337 EP - 350 PG - 14 UR - https://m2.mtmt.hu/api/publication/2388143 ID - 2388143 LA - English DB - MTMT ER - TY - CHAP AU - Góbi, Attila AU - Kovács, Andrea Erika AU - Leskó, Dániel AU - Mészáros, Mónika ED - Egri-Nagy, Attila ED - Kovács, Emőd ED - Kovásznai, Gergely ED - Kusper, Gábor ED - Tómács, Tibor TI - Detaching and reconstructing the documentary structure of source code T2 - Proceedings of the 8th International Conference on Applied Informatics, ICAI 2010 PB - Eszterházy Károly College CY - Eger SN - 9789639894723 PY - 2010 SP - 401 EP - 408 PG - 8 UR - https://m2.mtmt.hu/api/publication/2074366 ID - 2074366 AB - Formattings, comments and whitespaces in source code, ie. the documentary structure of the source code should be preserved during program transformations if the produced source is for human consumption. However, program transformations are easier to be described if the documentary structure may be discarded. This paper presents a solution that the documentary structure is detached before the transformations and it is re-attached after the transformations. The detached information is stored in three layers: token formattings, comments, and layout, what we call layered representation. This representation is also suitable for analysing and refactoring the documentary structure of the source code. This model is worked out for the F# programming language, and it has been implemented in, too. The proposed approach can be adapted to other programming languages. LA - English DB - MTMT ER - TY - CHAP AU - Góbi, Attila AU - Kozsik, Tamás AU - Mészáros, Mónika AU - Antyipin, Artyom Szergejevics AU - Batha, Dorián AU - Kiss, Tamás ED - Egri-Nagy, Attila ED - Kovács, Emőd ED - Kovásznai, Gergely ED - Kusper, Gábor ED - Tómács, Tibor TI - Untangling Type Inference and Scope Analysis T2 - Proceedings of the 8th International Conference on Applied Informatics, ICAI 2010 PB - Eszterházy Károly College CY - Eger SN - 9789639894723 PY - 2010 SP - 157 EP - 164 PG - 8 UR - https://m2.mtmt.hu/api/publication/1653146 ID - 1653146 N1 - Vol. 2. AB - Many modern functional programming languages support record types, parametric polymorphism and type inference. Allowing the same field name for two different records causes a problem in these languages. Some languages (e.g. Haskell) do not let you share the same field name among record types. Other languages (e.g. Clean) take the ambiguity of field names into account when deciding the type of a record expression. In the latter case the necessary static analysis performed by the compiler tangles type inference and scope analysis, because the scope analysis of field names needs type information and vice versa. This can result in a complex type inference algorithm and hardly maintainable code in the compiler of a language supporting namespaces and records. This paper will provide a method to decouple type inference and scope analysis by using the Bottom-Up algorithm. This way an iterative algorithm with consecutive type inference and scope analysis phases can be given. LA - English DB - MTMT ER -