Avaliação da qualidade do estilo de código de estudantes através de analisadores estáticos - Pereira, Francisco Tito Silva Santos (2025)
To improve the quality of students’ source code, instructors and researchers seek alternatives to provide code feedback not only regarding its correctness, but also its quality. Thus, tools such as Static Analyzers (SA) can be used to perform code analysis, identifying style problems. Related work indicates there is a low diversity of research in the field of software quality involving programming students at more advanced levels. Therefore, this work aims to evaluate the use of SAs in the context of advanced programming learning based on log analysis from an autograder tool. To do such, this work conducts an initial investigation regarding the quality of students’ programs regarding coding style. Based on the understanding of specific coding conventions of each programming language and the SAs’ quality report, we had to create a Static Analyzer (NamingCheck) to evaluate variable and function naming in both C and Python. In addition, we created PerfeQ, an SA integration tool, to enable more thorough feedback on code quality, integrating the Cpplint, Pylint and NamingCheck tools – presenting their warning messages and metric values to assess the quality of student code regarding style. We designed code style quality metrics and implemented them in PerfeQ. Then, we conducted a statistical study to check differences in style metrics between i) partial versus final submissions; ii) groups of students with grades above versus below a threshold; iii) C code versus Python code. Furthermore, we computed the correlation between code quality and student performance, and the internal correlation between the metrics. The results suggest that, in general, most students do not follow code style conventions of the languages used. From the scientific understanding of student code regarding their quality, we conclude that there is a need for greater concern from instructors and students regarding the issues of code quality in the process of learning programming languages, since code conventions and standards contribute to better software maintainability.