Preview

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

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

Проверка программ на соответствие стандарту MISRA C с использованием инфраструктуры Clang

https://doi.org/10.15514/ISPRAS-2022-35(5)-12

Аннотация

MISRA C – это сборник правил и рекомендаций по программированию на языке C, который является фактическим стандартом в отраслях, где безопасность играет ключевую роль. Стандарт разработан консорциумом MISRA (Motor Industry Software Reliability Association) и включает в себя набор рекомендаций, которые позволяют использовать язык C для разработки безопасного, надежного и переносимого программного обеспечения. MISRA широко применяется во многих отраслях с высокими требованиями к надежности, включая аэрокосмическую, оборонную, автомобильную и медицинскую.

Мы разработали статические детекторы для проверки кода на соответствие рекомендациям стандарта безопасного кодирования MISRA C 2012. Средство проверки кода основано на компиляторной инфраструктуре LLVM/clang. В данной статье описываются стратегии, лежащие в основе проектирования и реализации детекторов. На тестовых примерах MISRA С предложенные детекторы с высокой точностью определяют соответствие или нарушение рекомендациям. Также детекторы показывают большее покрытие и лучшую скорость работы, чем Cppcheck, популярный статический анализатор с открытым исходным кодом.

Об авторах

Рубен Артурович БУЧАЦКИЙ
Институт системного программирования им. В.П. Иванникова РАН
Россия

кандидат технических наук, научный сотрудник отдела компиляторных технологий ИСП РАН. Научные интересы: статический анализ программ, компиляторные технологии, оптимизации.



Ян Андрееви ЧУРКИН
Институт системного программирования им. В.П. Иванникова РАН, Московский государственный университет имени М.В. Ломоносова
Россия

Cтажер-исследователь отдела компиляторных технологий ИСП РАН. Научные интересы: статический анализ программ, компиляторные технологии, оптимизации.



Кирилл Алексеевич ЧИБИСОВ
Институт системного программирования им. В.П. Иванникова РАН
Россия

Инженер отдела компиляторных технологий ИСП РАН. Научные интересы: статический анализ программ, компиляторные технологии, оптимизации.



Михаил Вячеславович ПАНТИЛИМОНОВ
Институт системного программирования им. В.П. Иванникова РАН
Россия

Научный сотрудник отдела компиляторных технологий. Научные интересы: статический анализ, компиляторные технологии, СУБД.



Егор Викторович ДОЛГОДВОРОВ
Институт системного программирования им. В.П. Иванникова РАН, Московский физико-технический институт
Россия

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



Андрей Викторович ВЯЗОВЦЕВ
Институт системного программирования им. В.П. Иванникова РАН, Московский физико-технический институт
Россия

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



Алексей Георгиевич ВОЛОХОВ
Институт системного программирования им. В.П. Иванникова РАН
Россия

Ведущий инженер отдела компиляторных технологий ИСП РАН. Научные интересы: статический анализ программ, компиляторные технологии, оптимизации.



Владимир Владимирович ТРУНОВ
Институт системного программирования им. В.П. Иванникова РАН, Московский государственный университет имени М.В. Ломоносова, Московский физико-технический институт
Россия

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



Гаяне Оганнесовна МИРАКЯН
Российско-Армянский (Славянский) университет
Армения

Студентка Российско-Армянский Университета. Научные интересы: cтатический анализ программ, компиляторные технологии, оптимизации.



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

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



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

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



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

1. MIRSA official website. https://www.misra.org.uk/, accessed 01.11.2023.

2. SEI CERT C Coding Standard. https://wiki.sei.cmu.edu/confluence/display/c, accessed 01.11.2023.

3. AUTOSAR official website. https://www.autosar.org/, accessed 01.11.2023.

4. The LLVM Compiler Infrastructure. https://llvm.org/, accessed 01.11.2023.

5. Clang Tidy. https://clang.llvm.org/extra/clang-tidy/, accessed 01.11.2023.

6. Clang Static Analyzer. https://clang.llvm.org/docs/ClangStaticAnalyzer.html, accessed 01.11.2023.

7. Introduction to the Clang AST. https://clang.llvm.org/docs/IntroductionToTheClangAST.html, accessed 01.11.2023.

8. Cppcheck A tool for static C/C++ code analysis. http://cppcheck.net/, accessed 01.11.2023.

9. SonarQube. https://www.sonarsource.com/products/sonarqube/, accessed 01.11.2023.

10. Coverity Static Analysis. https://www.synopsys.com/software-integrity/static-analysis-tools-sast/coverity.html, accessed 01.11.2023.

11. Klocwork static analyzer. https://www.perforce.com/products/klocwork, accessed 01.11.2023.

12. PVS-Studio static analysis system. https://pvs-studio.com/en/, accessed 01.11.2023.

13. Motor Industry Software Reliability Association, MISRA-C:1998, Guidelines for the use of the C language in vehicle based software. Nuneaton, Warwickshire CV10 0TU, UK: MIRA Ltd, Jul. 1998.

14. The Motor Industry Research Association, Development Guidelines For Vehicle Based Software. Nuneaton, Warwickshire CV10 0TU, UK: The Motor Industry Research Association, Nov. 1994.

15. MISRA, MISRA C:2012 Amendment 1 – Additional security guidelines for MISRA C:2012. Nuneaton, Warwickshire CV10 0TU, UK: HORIBA MIRA Ltd, Apr. 2016.

16. MISRA, MISRA C:2012 Addendum 2 – Coverage of MISRA C:2012 (including Amendment 1) against ISO/IEC TS 17961:2013 “C Secure”

17. AST Matcher Reference, https://clang.llvm.org/docs/LibASTMatchersReference.html, accessed 01.11.2023.

18. CRTP pattern. https://en.cppreference.com/w/cpp/language/crtp, accessed 01.11.2023.

19. LLVM Alias Analysis Infrastructure, https://llvm.org/docs/AliasAnalysis.html, accessed 01.11.2023.

20. MISRA-C-2012 Example Suite, https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite, accessed 01.11.2023.

21. Библиотека zlib. http://zlib.net/, accessed 01.11.2023.

22. Библиотека openjpeg. http://www.openjpeg.org/, accessed 01.11.2023.

23. Библиотека openssl. https://www.openssl.org/, accessed 01.11.2023.

24. Библиотека coreJSON. https://github.com/freertos/corejson, accessed 01.11.2023.

25. Инфраструктура статического анализа CodeChecker. https://codechecker.readthedocs.io/en/latest/, accessed 01.11.2023.

26. coreJSON: MISRA Compliance, https://github.com/FreeRTOS/coreJSON/blob/main/MISRA.md, accessed 01.11.2023.

27. coreJSON: Fix short-circuiting operations with side-effects,

28. htps://github.com/FreeRTOS/coreJSON/pull/148, accessed 01.11.2023.


Рецензия

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


БУЧАЦКИЙ Р.А., ЧУРКИН Я.А., ЧИБИСОВ К.А., ПАНТИЛИМОНОВ М.В., ДОЛГОДВОРОВ Е.В., ВЯЗОВЦЕВ А.В., ВОЛОХОВ А.Г., ТРУНОВ В.В., МИРАКЯН Г.О., КИТАЕВ К.Н., БЕЛЕВАНЦЕВ А.А. Проверка программ на соответствие стандарту MISRA C с использованием инфраструктуры Clang. Труды Института системного программирования РАН. 2023;35(5):169-192. https://doi.org/10.15514/ISPRAS-2022-35(5)-12

For citation:


BUCHATSKIY R.A., CHURKIN Ya.A., CHIBISOV K.A., PANTILIMONOV M.V., DOLGODVOROV E.V., VYAZOVTSEV A.V., VOLOKHOV A.G., TRUNOV V.V., MIRAKYAN G.H., KITAEV K.N., BELEVANTSEV A.A. Checking Programs for Compliance with MISRA C Standard Using the Clang Framework. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2023;35(5):169-192. (In Russ.) https://doi.org/10.15514/ISPRAS-2022-35(5)-12



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


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