Using Static Analysis Tools to Assist Student Project Evaluation Arthur-Jozsef Molnar arthur@cs.ubbcluj.ro BabeşśBolyai University Cluj-Napoca, Romania Simona Motogna motogna@cs.ubbcluj.ro BabeşśBolyai University Cluj-Napoca, Romania Cristina Vlad vcis1860@scs.ubbcluj.ro BabeşśBolyai University Cluj-Napoca, Romania ABSTRACT Code review and static analysis tools are acknowledged as impor- tant instruments in software quality control and are used in the industry on a daily basis. In this exploratory study we examine how a well-known static analysis tool can be employed to assess the quality of student solutions to coding assignments. We examine all student solutions submitted to fulfll coding assignments re- quired as part of an introductory programming course taught using Python. We show how teaching staf can evaluate the progress of individual students and how coding mistakes common to many students can be highlighted. We also show how teaching staf can improve their own understanding of perceived assignment com- plexity by evaluating the aggregate quality of student submitted source code. CCS CONCEPTS · Social and professional topics Student assessment. KEYWORDS static analysis, student evaluation, Computer Science education ACM Reference Format: Arthur-Jozsef Molnar, Simona Motogna, and Cristina Vlad. 2020. Using Static Analysis Tools to Assist Student Project Evaluation. In Proceedings of the 2nd ACM SIGSOFT International Workshop on Education through Ad- vanced Software Engineering and Artifcial Intelligence (EASEAI ’20), No- vember 9, 2020, Virtual, USA. ACM, New York, NY, USA, 6 pages. https: //doi.org/10.1145/3412453.3423195 1 INTRODUCTION We know that source code quality has an important infuence on the software development process as a whole. While experience plays a central role in writing quality code, at the same time the principles of code quality should be taught early on. This leads to many introductory programming courses also addressing issues related to code quality in the form of observing coding guidelines, following a set of established best practices, and even adopting methodologies such as feature-driven or test-driven development. Code review and static analysis tools support this approach by allowing automatic detection of many types of quality defciencies such as software defects, security vulnerabilities, or the breaking of Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for proft or commercial advantage and that copies bear this notice and the full citation on the frst page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specifc permission and/or a fee. Request permissions from permissions@acm.org. EASEAI ’20, November 9, 2020, Virtual, USA © 2020 Copyright held by the owner/author(s). Publication rights licensed to ACM. ACM ISBN 978-1-4503-8102-4/20/11. . . $15.00 https://doi.org/10.1145/3412453.3423195 best practices in early development phases. These tools are widely used in the industry and their efciency in development and main- tenance has been proven to be signifcant, with existing research [14] showing average defect detection of up to 55% to 60%. How- ever, the usage of these tools in an educational setting is usually limited to quality control as a software engineering process, or within coursework dedicated to software quality, which is usually taught at a more advanced level. As such, the main objective of our work is to "assist teaching staf in monitoring the learning evolution of students in a programming language course". As many academic courses touch upon the most important issues of programming style and best practices, we be- lieve that special attention should be dedicated to corresponding learning outcomes and the way they are assessed. At the same time, evaluating the quality of student code is a tedious and time consuming activity, reasons for which it is often overlooked. This can be changed through automation, which brings additional ad- vantages such as the ability to track student progress through all completed assignments, compare student performance for a certain assignment as well as build an overall assessment of the student projects themselves, and improve the understanding teaching staf have about the aspects students found most difcult to address. We study how our main objective can be fulflled through an experience report that covers all student solutions to the coding assignments required within the Fundamentals of Programming introductory course that is taught using Python 3 and is attended by 200 frst-year undergraduate students in computer science from the Babeş-Bolyai University in Cluj-Napoca, Romania. 2 TOOLS FOR STATIC ANALYSIS Static code analysis allows developers to gain important insight into source code without having to run it. Its benefts are the subject of notable recent studies, mainly caused by the growth of static code analysis tools [10] and their tight link with software quality through implementation of known quality models such as SQALE [12] and QMOOD [3]. Current static analysis tools are considered to belong to the third generation [11], with the major shift in the fact that analysis is performed on the target program’s abstract syntax tree. Focusing on the logic of the code allows improved tool efciency in detecting existing issues. Most of the widely used tools are available for several programming languages and can be easily integrated into development environments in the form of plug-ins such as those for Pylint [16] and SonarQube [20]. Static analysis tools such as SonarQube were also used to characterize quality of large-scale code bases in recent research targeting software quality [8, 15]. The tight integration between well-known software quality models and static analysis tools have helped promote increased formalism in the study of software quality [1]. Boehm et al. [6] have shown that 7