home.social

#clangtidy — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #clangtidy, aggregated by home.social.

fetched live
  1. Очень много букв… Или кейс по специфической настройке рабочего окружения

    Сотни строк кода, страницы документации, корпоративные чаты — и всё это каждый день. Когнитивная нагрузка не снижается. Внутри — система инструментов, которая помогает мне не тонуть: конфиги clang и специфичные настройки VSCode, приложения визуализации и др. С объяснением зачем каждый из них.

    habr.com/ru/articles/1038372/

    #когнитивная_нагрузка #VSCode #clangformat #clangtidy #code_style #рабочее_окружение #настройка_ide #продуктивность #нейроразнообразие

  2. Очень много букв… Или кейс по специфической настройке рабочего окружения

    Сотни строк кода, страницы документации, корпоративные чаты — и всё это каждый день. Когнитивная нагрузка не снижается. Внутри — система инструментов, которая помогает мне не тонуть: конфиги clang и специфичные настройки VSCode, приложения визуализации и др. С объяснением зачем каждый из них.

    habr.com/ru/articles/1038372/

    #когнитивная_нагрузка #VSCode #clangformat #clangtidy #code_style #рабочее_окружение #настройка_ide #продуктивность #нейроразнообразие

  3. Очень много букв… Или кейс по специфической настройке рабочего окружения

    Сотни строк кода, страницы документации, корпоративные чаты — и всё это каждый день. Когнитивная нагрузка не снижается. Внутри — система инструментов, которая помогает мне не тонуть: конфиги clang и специфичные настройки VSCode, приложения визуализации и др. С объяснением зачем каждый из них.

    habr.com/ru/articles/1038372/

    #когнитивная_нагрузка #VSCode #clangformat #clangtidy #code_style #рабочее_окружение #настройка_ide #продуктивность #нейроразнообразие

  4. Sometimes it feels so worthless to spend time to set up static analyzers or other code analysis tools, just because it takes up quite some time and mostly they just report the usual stuff like "make this variable const" or "you should use trailing return types".

    But sometimes they do catch some interesting stuff. Clang-Tidy just caught a bug where I swapped two arguments passed to a function, which are both of the same type. It looks at the name and knows they are wrong. So cool.

    #ClangTidy

  5. Sometimes it feels so worthless to spend time to set up static analyzers or other code analysis tools, just because it takes up quite some time and mostly they just report the usual stuff like "make this variable const" or "you should use trailing return types".

    But sometimes they do catch some interesting stuff. Clang-Tidy just caught a bug where I swapped two arguments passed to a function, which are both of the same type. It looks at the name and knows they are wrong. So cool.

  6. Sometimes it feels so worthless to spend time to set up static analyzers or other code analysis tools, just because it takes up quite some time and mostly they just report the usual stuff like "make this variable const" or "you should use trailing return types".

    But sometimes they do catch some interesting stuff. Clang-Tidy just caught a bug where I swapped two arguments passed to a function, which are both of the same type. It looks at the name and knows they are wrong. So cool.

    #ClangTidy

  7. Sometimes it feels so worthless to spend time to set up static analyzers or other code analysis tools, just because it takes up quite some time and mostly they just report the usual stuff like "make this variable const" or "you should use trailing return types".

    But sometimes they do catch some interesting stuff. Clang-Tidy just caught a bug where I swapped two arguments passed to a function, which are both of the same type. It looks at the name and knows they are wrong. So cool.

    #ClangTidy

  8. Sometimes it feels so worthless to spend time to set up static analyzers or other code analysis tools, just because it takes up quite some time and mostly they just report the usual stuff like "make this variable const" or "you should use trailing return types".

    But sometimes they do catch some interesting stuff. Clang-Tidy just caught a bug where I swapped two arguments passed to a function, which are both of the same type. It looks at the name and knows they are wrong. So cool.

    #ClangTidy

  9. Как найти UB, которое никто не хочет замечать: разбираем clang-tidy изнутри

    Привет, Хабр! Меня зовут Анастасия Черникова, я занимаюсь разработкой компиляторных технологий и инструментов на базе LLVM в Синтакоре. Неопределенное поведение (undefined behavior, UB) по-разному выглядит с точки зрения компилятора и разработчика. Для первого оно, как правило, открывает дополнительные возможности для оптимизации. Для программиста же UB может стать проблемой, особенно если оно остается незамеченным и не учитывается при разработке. В этой статье рассмотрим подход к поиску UB с использованием статического анализа. В качестве примера я использую clang-tidy: сначала разберу, как устроены существующие чекеры и как работают AST matchers, а затем покажу, как расширять их и добавлять собственные проверки, если стандартных возможностей оказывается недостаточно. Отправимся на поиски и поимку UB →

    habr.com/ru/companies/yadro/ar

    #llvm #clangtidy #ast #check #cpp #undefined_behavior #UB #compiler #sanitizers

  10. Как найти UB, которое никто не хочет замечать: разбираем clang-tidy изнутри

    Привет, Хабр! Меня зовут Анастасия Черникова, я занимаюсь разработкой компиляторных технологий и инструментов на базе LLVM в Синтакоре. Неопределенное поведение (undefined behavior, UB) по-разному выглядит с точки зрения компилятора и разработчика. Для первого оно, как правило, открывает дополнительные возможности для оптимизации. Для программиста же UB может стать проблемой, особенно если оно остается незамеченным и не учитывается при разработке. В этой статье рассмотрим подход к поиску UB с использованием статического анализа. В качестве примера я использую clang-tidy: сначала разберу, как устроены существующие чекеры и как работают AST matchers, а затем покажу, как расширять их и добавлять собственные проверки, если стандартных возможностей оказывается недостаточно. Отправимся на поиски и поимку UB →

    habr.com/ru/companies/yadro/ar

    #llvm #clangtidy #ast #check #cpp #undefined_behavior #UB #compiler #sanitizers

  11. Как найти UB, которое никто не хочет замечать: разбираем clang-tidy изнутри

    Привет, Хабр! Меня зовут Анастасия Черникова, я занимаюсь разработкой компиляторных технологий и инструментов на базе LLVM в Синтакоре. Неопределенное поведение (undefined behavior, UB) по-разному выглядит с точки зрения компилятора и разработчика. Для первого оно, как правило, открывает дополнительные возможности для оптимизации. Для программиста же UB может стать проблемой, особенно если оно остается незамеченным и не учитывается при разработке. В этой статье рассмотрим подход к поиску UB с использованием статического анализа. В качестве примера я использую clang-tidy: сначала разберу, как устроены существующие чекеры и как работают AST matchers, а затем покажу, как расширять их и добавлять собственные проверки, если стандартных возможностей оказывается недостаточно. Отправимся на поиски и поимку UB →

    habr.com/ru/companies/yadro/ar

    #llvm #clangtidy #ast #check #cpp #undefined_behavior #UB #compiler #sanitizers

  12. It is hard to justify usage of clang-tidy when it takes longer than clean compilation of analyzed project.

    Certainly not on each compile, when it takes few minutes to complete (on measly 37 files) 😞

    #cpp #clangtidy

  13. It is hard to justify usage of clang-tidy when it takes longer than clean compilation of analyzed project.

    Certainly not on each compile, when it takes few minutes to complete (on measly 37 files) 😞

    #cpp #clangtidy

  14. It is hard to justify usage of clang-tidy when it takes longer than clean compilation of analyzed project.

    Certainly not on each compile, when it takes few minutes to complete (on measly 37 files) 😞

    #cpp #clangtidy

  15. It is hard to justify usage of clang-tidy when it takes longer than clean compilation of analyzed project.

    Certainly not on each compile, when it takes few minutes to complete (on measly 37 files) 😞

    #cpp #clangtidy

  16. It is hard to justify usage of clang-tidy when it takes longer than clean compilation of analyzed project.

    Certainly not on each compile, when it takes few minutes to complete (on measly 37 files) 😞

  17. [EDIT: this is wrong, read thread]

    Interesting #clangtidy issue.
    When using #cppmodules its possible to have a fixit applies multiple times causing incorrect code.

    I believe what is happening is the cppm is the source text, but its analysed in other translation unit by the module import which uses its pcm. In parallel they both read and apply their fixit and you get situations like NULL becoming nullptrptr.

    I'll try and make a minimal example at some point.

    #cpp #cplusplus

  18. [EDIT: this is wrong, read thread]

    Interesting issue.
    When using its possible to have a fixit applies multiple times causing incorrect code.

    I believe what is happening is the cppm is the source text, but its analysed in other translation unit by the module import which uses its pcm. In parallel they both read and apply their fixit and you get situations like NULL becoming nullptrptr.

    I'll try and make a minimal example at some point.

  19. [EDIT: this is wrong, read thread]

    Interesting #clangtidy issue.
    When using #cppmodules its possible to have a fixit applies multiple times causing incorrect code.

    I believe what is happening is the cppm is the source text, but its analysed in other translation unit by the module import which uses its pcm. In parallel they both read and apply their fixit and you get situations like NULL becoming nullptrptr.

    I'll try and make a minimal example at some point.

    #cpp #cplusplus

  20. [EDIT: this is wrong, read thread]

    Interesting #clangtidy issue.
    When using #cppmodules its possible to have a fixit applies multiple times causing incorrect code.

    I believe what is happening is the cppm is the source text, but its analysed in other translation unit by the module import which uses its pcm. In parallel they both read and apply their fixit and you get situations like NULL becoming nullptrptr.

    I'll try and make a minimal example at some point.

    #cpp #cplusplus

  21. [EDIT: this is wrong, read thread]

    Interesting #clangtidy issue.
    When using #cppmodules its possible to have a fixit applies multiple times causing incorrect code.

    I believe what is happening is the cppm is the source text, but its analysed in other translation unit by the module import which uses its pcm. In parallel they both read and apply their fixit and you get situations like NULL becoming nullptrptr.

    I'll try and make a minimal example at some point.

    #cpp #cplusplus

  22. Clang-tidy helps modernize C/C++ code by detecting bugs, inefficiencies & outdated patterns. While setup can be tricky, it's a powerful ally for migrating large codebases to modern C++. #Cpp #ClangTidy #StaticAnalysis #CodeQuality
    youtube.com/watch?v=EWq4mXjeDV

  23. Clang-tidy helps modernize C/C++ code by detecting bugs, inefficiencies & outdated patterns. While setup can be tricky, it's a powerful ally for migrating large codebases to modern C++. #Cpp #ClangTidy #StaticAnalysis #CodeQuality
    youtube.com/watch?v=EWq4mXjeDV

  24. Clang-tidy helps modernize C/C++ code by detecting bugs, inefficiencies & outdated patterns. While setup can be tricky, it's a powerful ally for migrating large codebases to modern C++. #Cpp #ClangTidy #StaticAnalysis #CodeQuality
    youtube.com/watch?v=EWq4mXjeDV

  25. Clang-tidy helps modernize C/C++ code by detecting bugs, inefficiencies & outdated patterns. While setup can be tricky, it's a powerful ally for migrating large codebases to modern C++. #Cpp #ClangTidy #StaticAnalysis #CodeQuality
    youtube.com/watch?v=EWq4mXjeDV

  26. Clang-tidy helps modernize C/C++ code by detecting bugs, inefficiencies & outdated patterns. While setup can be tricky, it's a powerful ally for migrating large codebases to modern C++.
    youtube.com/watch?v=EWq4mXjeDV8

  27. CW: rant programming clang-tidy

    When you spot such warnings after waiting endlessly for clang-tidy: "Suppressed 48487 warnings (48482 in non-user code, 5 NOLINT).

    So, to tell me about suppressed warnings in non-user code you must have checked it. But seriously nobody cares, dear clang-tidy. Are you German, or what's your problem?

    #clangtidy #efficency #programming

  28. CW: rant programming clang-tidy

    When you spot such warnings after waiting endlessly for clang-tidy: "Suppressed 48487 warnings (48482 in non-user code, 5 NOLINT).

    So, to tell me about suppressed warnings in non-user code you must have checked it. But seriously nobody cares, dear clang-tidy. Are you German, or what's your problem?

    #clangtidy #efficency #programming

  29. CW: rant programming clang-tidy

    When you spot such warnings after waiting endlessly for clang-tidy: "Suppressed 48487 warnings (48482 in non-user code, 5 NOLINT).

    So, to tell me about suppressed warnings in non-user code you must have checked it. But seriously nobody cares, dear clang-tidy. Are you German, or what's your problem?

    #clangtidy #efficency #programming

  30. CW: rant programming clang-tidy

    When you spot such warnings after waiting endlessly for clang-tidy: "Suppressed 48487 warnings (48482 in non-user code, 5 NOLINT).

    So, to tell me about suppressed warnings in non-user code you must have checked it. But seriously nobody cares, dear clang-tidy. Are you German, or what's your problem?

    #clangtidy #efficency #programming

  31. Безопасная работа с итераторами в С++

    После публикации предыдущей статьи на данную тему, некоторые читатели не обратили внимания, что данный проект, это не действующий инструмент, готовый для боевого применения в реальных проектах, а только доказательство работоспособости концепции использования плагинов компилятора для дополнительного семантического контроля исходного кода С++ во время компиляции. А в качестве примера реализации подобного плагина я взял концепцию безопасной работы с памятью из языка NewLang с минимальной адаптацией под C++ . То есть основная идея предыдущей статьи — продемонстрировать возможность использования плагина компилятора для дополнительного анализатора исходного текста, а не изучение функциональности реализованной библиотеки для работы с памятью (которая и не может быть в полном объеме портирована на С++ из-за архитектурных различий в этих языках программирования). Тем не мене, большинство читателей все же уловило основную мысль и проявило интерес к возможному дальнейшему развитию подобного подхода к повышению безопасной разработки на С++ без нарушения обратной совместимости со старым кодом. Поэтому, чтобы не смущать читателей отсылкой к неизвестному для них новому языку, я начал адаптировать концепцию безопасной работы с памятью под чистый С++ для решения специфических для С++ проблем. А пока идет доработка плагина и мне очень захотелось поделиться одним очень увлекательным квестом, которой показывает непреодолимые архитертурыне проблемы С++ на пути к безопасному программирования. И поводом для того стали итераторы.

    habr.com/ru/articles/878156/

    #clang #clangtidy #plugin #memory_management #memory_safety #iterator

  32. Безопасная работа с итераторами в С++

    После публикации предыдущей статьи на данную тему, некоторые читатели не обратили внимания, что данный проект, это не действующий инструмент, готовый для боевого применения в реальных проектах, а только доказательство работоспособости концепции использования плагинов компилятора для дополнительного семантического контроля исходного кода С++ во время компиляции. А в качестве примера реализации подобного плагина я взял концепцию безопасной работы с памятью из языка NewLang с минимальной адаптацией под C++ . То есть основная идея предыдущей статьи — продемонстрировать возможность использования плагина компилятора для дополнительного анализатора исходного текста, а не изучение функциональности реализованной библиотеки для работы с памятью (которая и не может быть в полном объеме портирована на С++ из-за архитектурных различий в этих языках программирования). Тем не мене, большинство читателей все же уловило основную мысль и проявило интерес к возможному дальнейшему развитию подобного подхода к повышению безопасной разработки на С++ без нарушения обратной совместимости со старым кодом. Поэтому, чтобы не смущать читателей отсылкой к неизвестному для них новому языку, я начал адаптировать концепцию безопасной работы с памятью под чистый С++ для решения специфических для С++ проблем. А пока идет доработка плагина и мне очень захотелось поделиться одним очень увлекательным квестом, которой показывает непреодолимые архитертурыне проблемы С++ на пути к безопасному программирования. И поводом для того стали итераторы.

    habr.com/ru/articles/878156/

    #clang #clangtidy #plugin #memory_management #memory_safety #iterator

  33. Безопасная работа с итераторами в С++

    После публикации предыдущей статьи на данную тему, некоторые читатели не обратили внимания, что данный проект, это не действующий инструмент, готовый для боевого применения в реальных проектах, а только доказательство работоспособости концепции использования плагинов компилятора для дополнительного семантического контроля исходного кода С++ во время компиляции. А в качестве примера реализации подобного плагина я взял концепцию безопасной работы с памятью из языка NewLang с минимальной адаптацией под C++ . То есть основная идея предыдущей статьи — продемонстрировать возможность использования плагина компилятора для дополнительного анализатора исходного текста, а не изучение функциональности реализованной библиотеки для работы с памятью (которая и не может быть в полном объеме портирована на С++ из-за архитектурных различий в этих языках программирования). Тем не мене, большинство читателей все же уловило основную мысль и проявило интерес к возможному дальнейшему развитию подобного подхода к повышению безопасной разработки на С++ без нарушения обратной совместимости со старым кодом. Поэтому, чтобы не смущать читателей отсылкой к неизвестному для них новому языку, я начал адаптировать концепцию безопасной работы с памятью под чистый С++ для решения специфических для С++ проблем. А пока идет доработка плагина и мне очень захотелось поделиться одним очень увлекательным квестом, которой показывает непреодолимые архитертурыне проблемы С++ на пути к безопасному программирования. И поводом для того стали итераторы.

    habr.com/ru/articles/878156/

    #clang #clangtidy #plugin #memory_management #memory_safety #iterator

  34. Безопасная разработка на С++ без нарушения обратной совместимости. Библиотека MemSafe и плагин для Clang

    Статья в продолжение темы безопасной разработки на С++ с примером работающего кода. Кратко предыдущие тезисы: Стремление С++ стать более "безопасным" языком программирования плохо сочетается с требования к стандарту языка. Ведь любой стандарт должен обеспечивать обратную совместимость со старым легаси кодом, что автоматически сводит на нет любые попытки внедрения какой либо новой лексики на уровне единого стандарта С++. А раз текущее состояние С++ не может гарантировать безопасную разработку на уровне стандартов, то выходит, что: Принятие новых стандартов С++ с изменением лексики для безопасной разработки обязательно нарушат обратную совместимость с существующим легаси кодом. Переписать всю имеющуюся кодовую базу С++ под новую безопасную лексику (если бы такие стандартны были приняты), ничуть не дешевле, чем переписать этот же код на новом модном языке программирования. Возможным выходом из данной ситуации является реализация такого синтаксиса безопасного С++ , который бы позволил удовлетворить оба этих требования. Причем самый лучший вариант, вообще не принимать какие либо новые стандарты С++ для изменения лексики, а попробовать использовать уже существующие принятые ранее.

    habr.com/ru/articles/874648/

    #clang #clangtidy #plugin #memory_management #memory #safety

  35. Безопасная разработка на С++ без нарушения обратной совместимости. Библиотека MemSafe и плагин для Clang

    Статья в продолжение темы безопасной разработки на С++ с примером работающего кода. Кратко предыдущие тезисы: Стремление С++ стать более "безопасным" языком программирования плохо сочетается с требования к стандарту языка. Ведь любой стандарт должен обеспечивать обратную совместимость со старым легаси кодом, что автоматически сводит на нет любые попытки внедрения какой либо новой лексики на уровне единого стандарта С++. А раз текущее состояние С++ не может гарантировать безопасную разработку на уровне стандартов, то выходит, что: Принятие новых стандартов С++ с изменением лексики для безопасной разработки обязательно нарушат обратную совместимость с существующим легаси кодом. Переписать всю имеющуюся кодовую базу С++ под новую безопасную лексику (если бы такие стандартны были приняты), ничуть не дешевле, чем переписать этот же код на новом модном языке программирования. Возможным выходом из данной ситуации является реализация такого синтаксиса безопасного С++ , который бы позволил удовлетворить оба этих требования. Причем самый лучший вариант, вообще не принимать какие либо новые стандарты С++ для изменения лексики, а попробовать использовать уже существующие принятые ранее.

    habr.com/ru/articles/874648/

    #clang #clangtidy #plugin #memory_management #memory #safety

  36. Безопасная разработка на С++ без нарушения обратной совместимости. Библиотека MemSafe и плагин для Clang

    Статья в продолжение темы безопасной разработки на С++ с примером работающего кода. Кратко предыдущие тезисы: Стремление С++ стать более "безопасным" языком программирования плохо сочетается с требования к стандарту языка. Ведь любой стандарт должен обеспечивать обратную совместимость со старым легаси кодом, что автоматически сводит на нет любые попытки внедрения какой либо новой лексики на уровне единого стандарта С++. А раз текущее состояние С++ не может гарантировать безопасную разработку на уровне стандартов, то выходит, что: Принятие новых стандартов С++ с изменением лексики для безопасной разработки обязательно нарушат обратную совместимость с существующим легаси кодом. Переписать всю имеющуюся кодовую базу С++ под новую безопасную лексику (если бы такие стандартны были приняты), ничуть не дешевле, чем переписать этот же код на новом модном языке программирования. Возможным выходом из данной ситуации является реализация такого синтаксиса безопасного С++ , который бы позволил удовлетворить оба этих требования. Причем самый лучший вариант, вообще не принимать какие либо новые стандарты С++ для изменения лексики, а попробовать использовать уже существующие принятые ранее.

    habr.com/ru/articles/874648/

    #clang #clangtidy #plugin #memory_management #memory #safety

  37. Безопасная разработка на С++ без нарушения обратной совместимости с легаси кодом

    Проблема безопасной разработки на С++ возникла не вчера, и она достигла таких размеров, что рекомендации использовать более надежные языки программирования , принимаются на самом высоком уровне. Но даже несмотря на наличие подобных рекомендаций, планы прекратить использовать С++ и перейти любой другой безопасный язык программирования, часто не выдерживают обычных финансовых расчетов. Ведь если отказаться от С++, то что придется делать с миллионами или даже миллиардами строк кода, которые были написаны за несколько предыдущих десятилетий? К сожалению, и сам С++ не особо стремится стать более "безопасным". Точнее, подобное стремление плохо сочетается с требования к стандарту языка, которые принимаются комитетом по стандартизации С++. Ведь любой стандарт должен обеспечивать обратную совместимость со всем старым легаси кодом, что автоматически сводит на нет любые попытки внедрения какой либо новой лексики на уровне единого стандарта С++. И в это ситуации правы те, кто выступает за обязательную поддержку обратной совместимости со старым кодом. Но правы и те, кто считает необходимым добавление новых возможностей для безопасной разработки на С++ хотя бы в новых проектах. Таким образом, возникают, казалось бы , взаимоисключающие и не разрешимые противоречия: Текущее состояние С++ не может гарантировать безопасную разработку на уровне стандартов языка. Принятие новых стандартов С++ с изменением лексики для безопасной разработки обязательно нарушат обратную совместимость с существующим легаси кодом. Переписывать всю имеющуюся кодовую базу С++ под новую безопасную лексику (если бы такие стандартны были приняты), ничуть не дешевле, чем переписать этот же код на новом модном языке программирования. Но ключевым моментом в предыдущем абзаце является фраза "казалось бы".

    habr.com/ru/articles/872956/

    #clang #clangtidy #plugin #memory_management #memory #safety

  38. Безопасная разработка на С++ без нарушения обратной совместимости с легаси кодом

    Проблема безопасной разработки на С++ возникла не вчера, и она достигла таких размеров, что рекомендации использовать более надежные языки программирования , принимаются на самом высоком уровне. Но даже несмотря на наличие подобных рекомендаций, планы прекратить использовать С++ и перейти любой другой безопасный язык программирования, часто не выдерживают обычных финансовых расчетов. Ведь если отказаться от С++, то что придется делать с миллионами или даже миллиардами строк кода, которые были написаны за несколько предыдущих десятилетий? К сожалению, и сам С++ не особо стремится стать более "безопасным". Точнее, подобное стремление плохо сочетается с требования к стандарту языка, которые принимаются комитетом по стандартизации С++. Ведь любой стандарт должен обеспечивать обратную совместимость со всем старым легаси кодом, что автоматически сводит на нет любые попытки внедрения какой либо новой лексики на уровне единого стандарта С++. И в это ситуации правы те, кто выступает за обязательную поддержку обратной совместимости со старым кодом. Но правы и те, кто считает необходимым добавление новых возможностей для безопасной разработки на С++ хотя бы в новых проектах. Таким образом, возникают, казалось бы , взаимоисключающие и не разрешимые противоречия: Текущее состояние С++ не может гарантировать безопасную разработку на уровне стандартов языка. Принятие новых стандартов С++ с изменением лексики для безопасной разработки обязательно нарушат обратную совместимость с существующим легаси кодом. Переписывать всю имеющуюся кодовую базу С++ под новую безопасную лексику (если бы такие стандартны были приняты), ничуть не дешевле, чем переписать этот же код на новом модном языке программирования. Но ключевым моментом в предыдущем абзаце является фраза "казалось бы".

    habr.com/ru/articles/872956/

    #clang #clangtidy #plugin #memory_management #memory #safety

  39. Безопасная разработка на С++ без нарушения обратной совместимости с легаси кодом

    Проблема безопасной разработки на С++ возникла не вчера, и она достигла таких размеров, что рекомендации использовать более надежные языки программирования , принимаются на самом высоком уровне. Но даже несмотря на наличие подобных рекомендаций, планы прекратить использовать С++ и перейти любой другой безопасный язык программирования, часто не выдерживают обычных финансовых расчетов. Ведь если отказаться от С++, то что придется делать с миллионами или даже миллиардами строк кода, которые были написаны за несколько предыдущих десятилетий? К сожалению, и сам С++ не особо стремится стать более "безопасным". Точнее, подобное стремление плохо сочетается с требования к стандарту языка, которые принимаются комитетом по стандартизации С++. Ведь любой стандарт должен обеспечивать обратную совместимость со всем старым легаси кодом, что автоматически сводит на нет любые попытки внедрения какой либо новой лексики на уровне единого стандарта С++. И в это ситуации правы те, кто выступает за обязательную поддержку обратной совместимости со старым кодом. Но правы и те, кто считает необходимым добавление новых возможностей для безопасной разработки на С++ хотя бы в новых проектах. Таким образом, возникают, казалось бы , взаимоисключающие и не разрешимые противоречия: Текущее состояние С++ не может гарантировать безопасную разработку на уровне стандартов языка. Принятие новых стандартов С++ с изменением лексики для безопасной разработки обязательно нарушат обратную совместимость с существующим легаси кодом. Переписывать всю имеющуюся кодовую базу С++ под новую безопасную лексику (если бы такие стандартны были приняты), ничуть не дешевле, чем переписать этот же код на новом модном языке программирования. Но ключевым моментом в предыдущем абзаце является фраза "казалось бы".

    habr.com/ru/articles/872956/

    #clang #clangtidy #plugin #memory_management #memory #safety

  40. Wanted to enable clang-tidy on my projects.

    Disappointment 1: CMake can't find clang-tidy shipped with MSVC.
    Disappointment 2: CMake way of enabling clang-tidy doesn't work with MSVC.
    Disappointment 3: clang-tidy shipped with MSVC doesn't fare well with C++23.

    #cpp #clangtidy

  41. Wanted to enable clang-tidy on my projects.

    Disappointment 1: CMake can't find clang-tidy shipped with MSVC.
    Disappointment 2: CMake way of enabling clang-tidy doesn't work with MSVC.
    Disappointment 3: clang-tidy shipped with MSVC doesn't fare well with C++23.

    #cpp #clangtidy

  42. Wanted to enable clang-tidy on my projects.

    Disappointment 1: CMake can't find clang-tidy shipped with MSVC.
    Disappointment 2: CMake way of enabling clang-tidy doesn't work with MSVC.
    Disappointment 3: clang-tidy shipped with MSVC doesn't fare well with C++23.

    #cpp #clangtidy

  43. Wanted to enable clang-tidy on my projects.

    Disappointment 1: CMake can't find clang-tidy shipped with MSVC.
    Disappointment 2: CMake way of enabling clang-tidy doesn't work with MSVC.
    Disappointment 3: clang-tidy shipped with MSVC doesn't fare well with C++23.

    #cpp #clangtidy

  44. Wanted to enable clang-tidy on my projects.

    Disappointment 1: CMake can't find clang-tidy shipped with MSVC.
    Disappointment 2: CMake way of enabling clang-tidy doesn't work with MSVC.
    Disappointment 3: clang-tidy shipped with MSVC doesn't fare well with C++23.

  45. #emacs #clangtidy Anyone who has a config for running clang tidy on save they are willing to share ?

  46. #emacs #clangtidy Anyone who has a config for running clang tidy on save they are willing to share ?

  47. #emacs #clangtidy Anyone who has a config for running clang tidy on save they are willing to share ?

  48. #emacs #clangtidy Anyone who has a config for running clang tidy on save they are willing to share ?

  49. #emacs #clangtidy Anyone who has a config for running clang tidy on save they are willing to share ?

  50. Can I haz faster clang-tidy with even more checks, please? 😺

    #clangtidy #CPlusCplus #cxx

  51. Can I haz faster clang-tidy with even more checks, please? 😺

    #clangtidy #CPlusCplus #cxx

  52. Can I haz faster clang-tidy with even more checks, please? 😺

    #clangtidy #CPlusCplus #cxx

  53. Can I haz faster clang-tidy with even more checks, please? 😺

    #clangtidy #CPlusCplus #cxx

  54. Современный С++ в разработке девайсов

    Привет, Хабр. Меня зовут Андрей Белобров. Я тимлид одной из команд, разрабатывающих приложения для умных девайсов Сбера. На прошедшей недавно конференции Салют, OS DevConf! я выступил с докладом , в котором рассказал, как мы с командой разрабатываем приложения на С++ для умных устройств с виртуальным ассистентом. А также о том, как инструменты статического и динамического анализа помогают поддерживать единый стиль и высокое качество кода в проекте. Во время доклада меня попросили подробнее описать детали нашего подхода в статье, поэтому рад поделиться с вами расширенной текстовой версией. Все наши устройства должны уметь взаимодействовать c виртуальным ассистентом, проигрывать музыку, обновлять прошивку, выполнять аутентификацию пользователя и т.д.. Такая функциональность реализована в едином для всех платформ приложении, работающем в пользовательском режиме на каждом из наших устройств, будь то умная колонка, ТВ-приставка или умный телевизор. Язык С++ позволяет писать эффективный и переносимый между различными платформами код, поэтому выбор языка программирования для нашего приложения был очевиден. При этом язык известен своей сложностью и возможностью выполнить одну и ту же задачу несколькими способами. Чтобы успешно разрабатывать большой проект на языке C++, необходимо хорошо настроить процесс разработки в команде (а это несколько десятков инженеров). Также можно значительно осовременить разработку на C++ за счет использования подходящих инструментов статического и динамического анализа, и правильной интеграции их в процесс разработки.

    habr.com/ru/companies/sberdevi

    #с++ #clangtidy #unittesting #embedded #динамический_анализ_кода #статический_анализ_кода #качество_кода #clangformat

  55. Современный С++ в разработке девайсов

    Привет, Хабр. Меня зовут Андрей Белобров. Я тимлид одной из команд, разрабатывающих приложения для умных девайсов Сбера. На прошедшей недавно конференции Салют, OS DevConf! я выступил с докладом , в котором рассказал, как мы с командой разрабатываем приложения на С++ для умных устройств с виртуальным ассистентом. А также о том, как инструменты статического и динамического анализа помогают поддерживать единый стиль и высокое качество кода в проекте. Во время доклада меня попросили подробнее описать детали нашего подхода в статье, поэтому рад поделиться с вами расширенной текстовой версией. Все наши устройства должны уметь взаимодействовать c виртуальным ассистентом, проигрывать музыку, обновлять прошивку, выполнять аутентификацию пользователя и т.д.. Такая функциональность реализована в едином для всех платформ приложении, работающем в пользовательском режиме на каждом из наших устройств, будь то умная колонка, ТВ-приставка или умный телевизор. Язык С++ позволяет писать эффективный и переносимый между различными платформами код, поэтому выбор языка программирования для нашего приложения был очевиден. При этом язык известен своей сложностью и возможностью выполнить одну и ту же задачу несколькими способами. Чтобы успешно разрабатывать большой проект на языке C++, необходимо хорошо настроить процесс разработки в команде (а это несколько десятков инженеров). Также можно значительно осовременить разработку на C++ за счет использования подходящих инструментов статического и динамического анализа, и правильной интеграции их в процесс разработки.

    habr.com/ru/companies/sberdevi

    #с++ #clangtidy #unittesting #embedded #динамический_анализ_кода #статический_анализ_кода #качество_кода #clangformat

  56. @matus_chochlik really cool solution! I'm using clang-tidy on pretty big code bases at work and have exactly these problems.
    #clangtidy #staticanalysis #cpp

  57. @matus_chochlik really cool solution! I'm using clang-tidy on pretty big code bases at work and have exactly these problems.
    #clangtidy #staticanalysis #cpp