Architecture-Aware Static Analysis and Violation Detection of C# Student Submissions
Bálint Dominik Orosz, Judit Szücs, Máté CserépStatic analysis of student programming submissions has proven a useful supplement to manual evaluation in university courses, but existing approaches focus on local code-quality issues and rarely check higher-level design decisions such as architectural conformance. We propose an architecture-aware static-analysis methodology for student submissions written in C# and structured according to the Model-View (MV) or Model-View-ViewModel (MVVM) architectures. A deterministic clustering algorithm assigns user-defined types to architectural layers by combining heuristic rules derived from SDK conventions with course-specific information, and our 10 proposed violation checks—covering layer-dependency rules, encapsulation, event handling, and dependence on concretions—are evaluated on the recovered layer structure. We implemented the methodology as an open-source analyzer integrated with an automated submission-evaluation system used in a university course focused on event-driven applications, and evaluated it on 947 submissions containing 13,126 user-defined types from past semesters. The analyzer assigned more than 98% of types to their correct layer and surfaced more than 6000 architectural and design issues. The results show that architecture-aware static analysis is a viable complement to manual grading and produces actionable feedback for both students and lecturers.