Привет всем, кто принял участие в первой встрече клуба C++ программистов. А кто не принял, приглашаю следить за анонсами будущих мероприятий :)

Небольшой постскриптум по итогам докладов и общения.

Первое. Обсуждалась тема доверенных компиляторов, и меня просили подсказать номер стандарта. Вот он: ГОСТ Р 71206-2024 «Защита информации. Разработка безопасного программного обеспечения. Безопасный компилятор языков С/С++. Общие требования». Примеры компиляторов: SAFEC (на основе GCC) и Safelang (на основе Clang). Подробнее.

Второе. Я говорил, что в презентацию вкралась опечатка — там, где я рассматривал ошибку в функции сравнения. Мне не давал этот момент покоя, т.к. я не понимал, почему там такой код, хотя я вроде его не правил имена переменных и не перенабирал что-то. В общем, сейчас посмотрел и разобрался. Я допустил сopy-paste ошибку :)

Я запутался в двух похожих фрагментах с ошибками и скрестил их в презентации :)

Итак, на самом деле в нашей коллекции ошибок выписаны два разных случая:

Проект IronPython. Предупреждение PVS-Studio: V3021 There are two 'if' statements with identical conditional expressions. The first 'if' statement contains method return. This means that the second 'if' statement is senseless. SourceLocation.cs 156 `public static int Compare(SourceLocation left, SourceLocation right) { if (left < right) return -1; if (right > left) return 1; return 0; } Здесь как раз местами поменяны операнды и изменён оператор сравнения на противоположный. В результате два условия на самом деле оказались идентичными.

Рассмотренный пример смешался с этим:

Проект Samba. Предупреждение PVS-Studio: V501 There are identical sub-expressions to the left and to the right of the '>' operator: i2->pid > i2->pid brlock.c 1901 `static int compare_procids(const void p1, const void p2) { const struct server_id i1 = (struct server_id )p1; const struct server_id i2 = (struct server_id )p2;

if (i1->pid < i2->pid) return -1; if (i2->pid > i2->pid) return 1; return 0; } Код похожий, но здесь другой тип ошибки. Переменная сравнивается сама с собой: i2->pid > i2->pid.

Никто не защищён от опечаток и сopy-paste ошибок. Даже я :) Используйте статический анализатор кода PVS-Studio как дополнительную пару глаз для обзоров кода :)

Третье. Условия получения бесплатных вариантов лицензий PVS-Studio: - Бесплатное использование PVS-Studio студентами и преподавателями. - Бесплатная лицензия PVS-Studio для Open Source.``

Привет всем, кто принял участие в первой встрече клуба C программистов. А кто не принял, приглашаю следить за анонсами будущих мероприятий :)
Небольшой постскриптум по итогам докладов и общения | Сетка — новая социальная сеть от hh.ru
repost

26

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь