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.
Ссылки и действия
Дополнительные ресурсы: