Are We SOLID Yet? An Empirical Study on Prompting LLMs to Detect Design Principle Violations

2509.03093v1 cs.SE, cs.AI 2025-09-05
Авторы:

Fatih Pehlivan, Arçin Ülkü Ergüzen, Sahand Moslemi Yengejeh, Mayasah Lami, Anil Koyuncu

Резюме на русском

## Контекст Современные статические анализаторы кода сталкиваются с трудностями при обнаружении семантических ошибок в конструкциях программного обеспечения, таких как нарушения принципов SOLID. Эти нарушения требуют глубокого понимания объектно-ориентированных паттернов и принципов проектирования. На сегодняшний день, существующие методы статического анализа, как правило, ограничены в обнаружении нарушений по отдельным принципам SOLID или применяются только к конкретным языкам программирования. Это приводит к значительным ограничениям в обнаружении нарушений SOLID в многоязычных кодовых базах. Однако эта проблема является критической, так как нарушения SOLID приводят к ухудшению обслуживаемости кода, что может привести к большим затратам на его поддержание. Данное исследование направлено на разработку и оценку нового подхода, основанного на искусственных нейросетевых моделях (ансамбли), для решения этой проблемы. ## Метод Методология исследования основывается на подходе, который использует предобученные модели глубокого обучения (LLMs) для обнаружения нарушений SOLID. Авторы разработали бинарную метрику для оценки того, насколько точно модель обнаруживает нарушения каждого из пяти принципов SOLID. Для создания данных для обучения и тестирования были созданы 240 макрокодов, которые были ручной проверены на наличие нарушений SOLID. Для каждого макрокода была создана открытая тематическая модель, в которой описывалось контекстное использование кода и наличие нарушения. Для проведения экспериментов, были протестированы четыре лидирующие модели глубокого обучения: CodeLlama, DeepSeekCoder, QwenCoder и GPT-4o Mini. В качестве методов оценки использовались различные стратегии тренировки моделей, включая нулевой, несколько и заданный цепочечный подход. ## Результаты На основе проведенных экспериментов был получен ранг моделей в зависимости от точности обнаружения нарушений SOLID. Модель GPT-4o Mini показала самую высокую точность в обнаружении нарушений, однако даже она сталкивалась с трудностями при обнаружении нарушений принципа Dependency Inversion Principle (DIP). Было проверено, что стратегия тренировки моделей имеет значительное влияние на точность обнаружения нарушений. Например, стратегия ENSEMBLE была эффективна для обнаружения нарушений в OCP, в то время как стратегия EXAMPLE была более эффективна для обнаружения нарушений в DIP. Было также выявлено, что точность обнаружения нарушений сильно зависит от характеристик языка программирования и снижается с увеличением сложности кода. ## Значимость Найденные результаты имеют значительное значение для области анализа кода и обеспечения его обслуживаемости. Изученная модель может быть использована в статических анализаторах для боле

Abstract

Traditional static analysis methods struggle to detect semantic design flaws, such as violations of the SOLID principles, which require a strong understanding of object-oriented design patterns and principles. Existing solutions typically focus on individual SOLID principles or specific programming languages, leaving a gap in the ability to detect violations across all five principles in multi-language codebases. This paper presents a new approach: a methodology that leverages tailored prompt engineering to assess LLMs on their ability to detect SOLID violations across multiple languages. We present a benchmark of four leading LLMs-CodeLlama, DeepSeekCoder, QwenCoder, and GPT-4o Mini-on their ability to detect violations of all five SOLID principles. For this evaluation, we construct a new benchmark dataset of 240 manually validated code examples. Using this dataset, we test four distinct prompt strategies inspired by established zero-shot, few-shot, and chain-of-thought techniques to systematically measure their impact on detection accuracy. Our emerging results reveal a stark hierarchy among models, with GPT-4o Mini decisively outperforming others, yet even struggles with challenging principles like DIP. Crucially, we show that prompt strategy has a dramatic impact, but no single strategy is universally best; for instance, a deliberative ENSEMBLE prompt excels at OCP detection while a hint-based EXAMPLE prompt is superior for DIP violations. Across all experiments, detection accuracy is heavily influenced by language characteristics and degrades sharply with increasing code complexity. These initial findings demonstrate that effective, AI-driven design analysis requires not a single best model, but a tailored approach that matches the right model and prompt to the specific design context, highlighting the potential of LLMs to support maintainability through AI-assisted code analysis.

Ссылки и действия