Preview

Труды Института системного программирования РАН

Расширенный поиск

Повышение полноты статического анализа приложений, использующих фреймворки, методом генерации эквивалентного кода

https://doi.org/10.15514/ISPRAS-2026-38(2)-7

Аннотация

В статье описывается подход к повышению полноты анализа за счет генерации эквивалентного кода из внешних файлов. Метод восстанавливает неявные связи между элементами пользовательского интерфейса и обработчиками событий путем анализа разметки, извлечения семантических связей и генерации эквивалентного кода на C#, который моделирует сценарии взаимодействия с пользователем. Этот метод был реализован в статическом анализаторе SharpChecker с акцентом на приложения WPF. Он включает в себя синтаксический анализ XAML, извлечение ViewModel для шаблонов MVVM и генерацию кода на основе CodeDom, имитирующую обработку событий и вызовы команд в ответ на действия пользователя. Эксперименты в пяти проектах WPF с открытым исходным кодом выявили 84 новых положительных предупреждений, включая ошибки деления на ноль и ранее пропущенные разыменования нулевых указателей. Этот подход обеспечивает минимальные затраты на анализ и легко интегрируется с существующими анализаторами. Результаты демонстрируют, что генерация эквивалентного кода значительно повышает полноту статического анализа использующих фреймворки приложений.

Об авторах

Никита Александрович БОРОДАВКО
Институт системного программирования им. В.П. Иванникова РАН, Московский государственный университет имени М.В. Ломоносова
Россия

Студент бакалавриата факультета вычислительной математики и кибернетики МГУ, сотрудник ИСП РАН. Сфера научных интересов: компиляторные технологии, статический анализ исходного кода, символьное выполнение, поиск дефектов в исходном коде.



Валерий Николаевич ИГНАТЬЕВ
Институт системного программирования им. В.П. Иванникова РАН, Московский государственный университет имени М.В. Ломоносова
Россия

Кандидат физико-математических наук, старший научный сотрудник ИСП РАН, доцент кафедры системного программирования факультета ВМК МГУ. Научные интересы включают методы поиска ошибок в исходном коде ПО на основе статического анализа.



Список литературы

1. .NET Developer Platform. Available at: https://learn.microsoft.com/en-us/dotnet/, accessed 22-05-2025.

2. Windows Presentation Foundation for .NET documentation | Microsoft Learn. Available at: https://learn.microsoft.com/en-us/dotnet/desktop/wpf/, accessed 22-05-2025.

3. Avalonia UI: Cross-Platform UI Frameworks for .NET Developers. Available at: https://avaloniaui.net/, accessed: 22-05-2025.

4. ASP.NET Core documentation. Available at: https://learn.microsoft.com/en-us/aspnet/core/, accessed: 22-05-2025.

5. Entity Framework documentation hub. Available at: https://learn.microsoft.com/en-us/ef, accessed: 22-05-2025.

6. .NET Multi-Platform App UI (.NET MAUI). Available at: https://dotnet.microsoft.com/en-us/apps/maui, accessed: 22-05-2025.

7. M. Chen, T. Tu, H. Zhang, Q. Wen и W. Wang. Jasmine: A static analysis framework for spring core technologies. In Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering, pp. 1-13, 2022.

8. J. Samhi, M. Miltenberger, M. Alecci, S. Arzt, T. Bissyand´e и J. Klein. Do you have 5 min? Improving Call Graph Analysis with Runtime Information. In Proceedings of the 33rd ACM International Conference on the Foundations of Software Engineering, pp. 540-544, 2025.

9. S. Chakraborty и P. Aithal. MVVM Demonstration Using C# WPF. International Journal of Applied Engineering and Management Letters (IJAEML), 7(1): 1-14, 2023.

10. Avetisyan, S. Kurmangaleev, S. Sargsyan, M. Arutunian и A. Belevantsev. LLVM-based code clone detection framework. In 2015 Computer Science and Information Technologies (CSIT), 2015, pp. 100-104. DOI: 10.1109/CSITechnol.2015.7358259

11. Coverity Scan - Static Analysis. Available at: https://scan.coverity.com/, accessed: 06-11-2025.

12. Code Quality, Security & Static Analysis Tool with SonarQube | Sonar. Available at: https://www.sonarsource.com/products/sonarqube/, accessed: 22-05-2025.

13. XAML Editing Tools - Features | ReSharper. Available at: https://www.jetbrains.com.cn/en-us/resharper/features/xaml_editor.html, accessed: 22-05-2025.

14. Проверяем исходный код WPF примеров от компании Infragistics. Available at: https://pvs-studio.ru/ru/blog/posts/csharp/0375/, accessed: 22-05-2025.

15. J. Samhi, R. Just, T. F. Bissyand´e, M. D. Ernst и J. Klein. Call Graph Soundness in Android Static Analysis. In Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis, pp. 945-957, 2024.

16. L. Sui, J. Dietrich, M. Emery, S. Rasheed и A. Tahir. On the soundness of call graph construction in the presence of dynamic language features – a benchmark and tool evaluation. In Programming Languages and Systems: 16th Asian Symposium, APLAS 2018, Wellington, New Zealand, December 2-6, 2018, Proceedings 16, pp. 69-88. Springer, 2018.

17. M. Khedkar. Call Graph Construction for Spring Framework. Дис. док., CHENNAI MATHEMATICAL INSTITUTE, 2020.

18. S. Yang, D. Yan, H. Wu, Y. Wang и A. Rountev. Static control-flow analysis of user-driven callbacks in Android applications. In 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, том 1, pp. 89-99. IEEE, 2015.

19. C. Sells и I. Griffiths. Programming WPF: Building Windows UI with Windows Presentation Foundation. O’Reilly Media, Inc., 2007.

20. XAML language overview – WPF | Microsoft Learn. Available at: https://learn.microsoft.com/en-us/dotnet/desktop/wpf/xaml/, accessed: 22-05-2025.

21. Кошелев В.К., Игнатьев В.Н., Борзилов А.И. Инфраструктура статического анализа программ на языке C#. Труды ИСП РАН, том 28, вып. 1, 2016 г., стр. 21-40 / Koshelev V.K., Ignatyev V.N., Borzilov A.I. C# static analysis framework. Trudy ISP RAN/Proc. ISP RAS, vol. 28, issue 1, 2016, pp. 21-40 (in Russian). DOI: 10.15514/ISPRAS-2016-28(1)-2.

22. В. К. Кошелев, И. А. Дудина, В. Игнатьев и А. И. Борзилов. Чувствительный к путям поиск дефектов в программах на языке C# на примере разыменования нулевого указателя. Труды ИСП РАН, том 27, вып. 5, 2015 г., стр. 59-86. / Koshelev V., Dudina I., Ignatyev V., Borzilov A. Path-sensitive bug detection analysis of C# program illustrated by null pointer dereference. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2015;27(5):59-86. (In Russ.) DOI: 10.15514/ISPRAS-2015-27(5)-5

23. How MSBuild builds projects - MSBuild | Microsoft Learn. Available at: https://learn.microsoft.com/en-us/visualstudio/msbuild/build-process-overview, accessed: 22-05-2025.

24. Chordious. Available at: https://chordious.com/, accessed: 22-05-2025.

25. ScreenToGif. Available at: https://www.screentogif.com/, accessed: 22-05-2025.

26. JPPhotoManager. Available at: https://github.com/jpablodrexler/jp-photo-manager, accessed: 22-05-2025.

27. ratishphilip/nvmsharp: A WPF application which provides robust features to manage Environment Variables in a Windows desktop. Available at: https://github.com/ratishphilip/nvmsharp, accessed: 22-05-2025.

28. x78654C/PwM: Simple password manager in С# WPF to store locally sensitive authentication data for a specific application. Available at: https://github.com/0x78654C/PwM, accessed 22-05-2025.


Рецензия

Для цитирования:


БОРОДАВКО Н.А., ИГНАТЬЕВ В.Н. Повышение полноты статического анализа приложений, использующих фреймворки, методом генерации эквивалентного кода. Труды Института системного программирования РАН. 2026;38(2):95-110. https://doi.org/10.15514/ISPRAS-2026-38(2)-7

For citation:


BORODAVKO N.A., IGNATIEV V.N. Improving the Recall of Static Analysis of Applications Using Frameworks by Generating Equivalent Code. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2026;38(2):95-110. (In Russ.) https://doi.org/10.15514/ISPRAS-2026-38(2)-7



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)