Известно высказывание Дональда Кнута о том, что преждевременная оптимизация — это корень всех зол. На практике не всё так однозначно. На базе своего собственного опыта разработки статического анализатора кода Андрей и его команда пришли к выводу, что от неуклонной деградации производительности нас может спасти только преждевременная оптимизация всего, что можно. Спикер хочет поделиться своими соображениями и применяемыми его командой приёмами.
Здравствуйте, jul_nevermind, Вы писали:
_>Спикер хочет поделиться своими соображениями и применяемыми его командой приёмами.
Пробуйте писать менее рекламные и более информативные сообщения. Например, дав ссылку на видео, дайте и на презентацию: вот она. Лучше пробежать глазами презенташку за пару минут и, если она заинтересовала, тратить время на видео. Уважайте чужое время!
Re: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимизаци
Здравствуйте, jul_nevermind, Вы писали:
_>Известно высказывание Дональда Кнута о том, что преждевременная оптимизация — это корень всех зол. На практике не всё так однозначно. На базе своего собственного опыта разработки статического анализатора кода Андрей и его команда пришли к выводу, что от неуклонной деградации производительности нас может спасти только преждевременная оптимизация всего, что можно. Спикер хочет поделиться своими соображениями и применяемыми его командой приёмами.
А что бы Андрею и его команде не зайти сюда лично, и не обсудить свои мысли с нами? А то чувствую себя аборигеном, которого белый миссионер приехал просвящать по телевизору.
Re: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимизаци
Здравствуйте, jul_nevermind, Вы писали:
_>Известно высказывание Дональда Кнута о том, что преждевременная оптимизация — это корень всех зол. На практике не всё так однозначно. На базе своего собственного опыта разработки статического анализатора кода Андрей и его команда пришли к выводу, что от неуклонной деградации производительности нас может спасти только преждевременная оптимизация всего, что можно. Спикер хочет поделиться своими соображениями и применяемыми его командой приёмами.
Ты мне про Кнута такого не говори!
Где тут преждевременность? Не вижу. На практике Андрей и Ко установили, что код их диагностик лежит на критическом пути и требует усилий по оптимизации.
Наверняка в продукте хватает инфраструктурного кода, о скорости которого никто не заботится, ибо не нужно. Так что никаких откровений.
Re[2]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Pzz>А что бы Андрею и его команде не зайти сюда лично, и не обсудить свои мысли с нами? А то чувствую себя аборигеном, которого белый миссионер приехал просвящать по телевизору.
Я здесь.
Re[3]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Здравствуйте, Analytic2007, Вы писали:
Pzz>>А что бы Андрею и его команде не зайти сюда лично, и не обсудить свои мысли с нами? А то чувствую себя аборигеном, которого белый миссионер приехал просвящать по телевизору.
A>Я здесь.
Очень рад этому факту.
Я полагаю, среди участников этого форума есть определенное количество высококлассных программистов. Если вы хотите плодотворной дискуссии, полагаю вам было бы лучше всего написать небольшую статью в "философию программирования". Формат совместного просмотра кинофильма с последующим обсуждением здесь вряд ли сработает.
Кстати, если у вас есть желание и интерес, можете поэкспериментировать со своей PVS-Studio на моем среднего размера опенсорсном проекте: https://github.com/alexpevzner/sane-airscan
Если ваш анализатор найдет в моем коде чего-нибудь интересное, я вас публично и со ссылками поблагодарю в своем README. У этого проекта есть потенциал стать в течении пары лет самым используемым драйвером сканера для линукса.
Re[4]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Pzz>Кстати, если у вас есть желание и интерес, можете поэкспериментировать со своей PVS-Studio на моем среднего размера опенсорсном проекте: https://github.com/alexpevzner/sane-airscan
Ничего такого уж прям не нашлось, но, тем не менее, анализатор выявил несколько интересных мест.
Предупреждение PVS-Studio: V595 [CWE-476] The 'rs' pointer was utilized before it was verified against nullptr. Check lines: 232, 242. airscan-zeroconf.c 232
В начале указатель rs смело используется, а затем вдруг выясняется, что этот указатель может быть равен нулю. Соответственно, или указатель всегда точно не равен нулю, ошибки нет и лишнюю проверку можно удалить, чтобы она не сбивала с толку. Или это полноценная ошибка и функция не готова, что аргумент rs будет равен NULL.
Предупреждение PVS-Studio: V512 [CWE-119] A call of the 'sprintf' function will lead to overflow of the buffer 'str_addr + len'. airscan-zeroconf.c 224
Небезопасная работа с буфером. Я не знаком с проектом и не могу сказать, возможно ли существование входных данных, которые приведут к переполнению буфера. Но, как я понимаю, вызов функции avahi_address_snprint может заполнить весь буфер целиком. А это значит, что последующий за ним вызов функции sprint уже может привести к выводу строки уже за пределами буфера. Предсказать последствия невозможно, но обычно подобные неаккуратности и становятся в последствии уязвимостями.
Re[5]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Здравствуйте, Analytic2007, Вы писали:
Pzz>>Кстати, если у вас есть желание и интерес, можете поэкспериментировать со своей PVS-Studio на моем среднего размера опенсорсном проекте: https://github.com/alexpevzner/sane-airscan
A>Ничего такого уж прям не нашлось, но, тем не менее, анализатор выявил несколько интересных мест.
Класс! Чего про вас написать, или на мое усмотрение?
В комментарии к гитовскому коммиту я вас уже помянул
A>Предупреждение PVS-Studio: V595 [CWE-476] The 'rs' pointer was utilized before it was verified against nullptr. Check lines: 232, 242. airscan-zeroconf.c 232
Это реальный баг, могло и корку сдампить (в сочетании с багом устройства).
A>Предупреждение PVS-Studio: V570 The '* addrinfo2' variable is assigned to itself. airscan-zeroconf.c 263
A>Опечатка. Структура копируется сама в себя. Явно хотели написать:
Да. Последствия на самом деле не очень значительные, но тем не менее, реальная ошибка.
A>Предупреждение PVS-Studio: V512 [CWE-119] A call of the 'sprintf' function will lead to overflow of the buffer 'str_addr + len'. airscan-zeroconf.c 224
A>Небезопасная работа с буфером. Я не знаком с проектом и не могу сказать, возможно ли существование входных данных, которые приведут к переполнению буфера. Но, как я понимаю, вызов функции avahi_address_snprint может заполнить весь буфер целиком. А это значит, что последующий за ним вызов функции sprint уже может привести к выводу строки уже за пределами буфера. Предсказать последствия невозможно, но обычно подобные неаккуратности и становятся в последствии уязвимостями.
Это false positive, там форматируется IP-адрес с опциональным числовым суфиксом, и все это гарантированно влезет в буфер. Но анализатору, конечно, это знать неоткуда. Наверное, надо не полениться и snprintf написать...
Re[6]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Здравствуйте, Analytic2007, Вы писали:
A>Ничего такого уж прям не нашлось, но, тем не менее, анализатор выявил несколько интересных мест.
А вот одну ошибочку она таки не поймала, а clang поймал.
В файле airscan-device.c, в функции device_escl_check_status_callback, в строках от 645-й возможно использование переменных device_status и adf_status до инициализации.
Re[2]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Здравствуйте, Nuzhny, Вы писали:
_>>Спикер хочет поделиться своими соображениями и применяемыми его командой приёмами. N>Пробуйте писать менее рекламные и более информативные сообщения. Например, дав ссылку на видео, дайте и на презентацию: вот она.
Жуть какая! И это вы называете преждевременной оптимизацией? Преждевременная оптимизация и рекурсивные функции не могут быть совместимы.
И каждый день — без права на ошибку...
Re[3]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, Nuzhny, Вы писали:
BFE>Жуть какая! И это вы называете преждевременной оптимизацией? Преждевременная оптимизация и рекурсивные функции не могут быть совместимы.
Ты кнопкой ошибся, дядя. Я никакого отношения к оратору не имею.
Re[7]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Как всегда, на всякий случай, контрольное напоминание читателям. Разовые проверки не имеют ничего общего с идеологией статического анализа. Суть — регулярно использование с целью выявления ошибок на самых ранних этапах и тем самым сокращении расходов на их устранение. Подробнее.
Re[9]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Здравствуйте, Analytic2007, Вы писали:
A>Как всегда, на всякий случай, контрольное напоминание читателям. Разовые проверки не имеют ничего общего с идеологией статического анализа. Суть — регулярно использование с целью выявления ошибок на самых ранних этапах и тем самым сокращении расходов на их устранение. Подробнее.
Это понятно.
Было бы здорово, если бы вы сделали интеграцию с гитхабом. Для Go таких инструментов пруд пруди, а вот для C как-то не видно. Сделаете — будете первыми
Re[4]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Кстати, каковы нынче примерные нормы оценки размера проекта? Я всегда считал, что мой основной проект с 1.3 Мб исходников — "меньше среднего", и даже слегка переживал за это, а Вы свой с 250 кб называете "средним".
Re[5]: Преждевременная оптимизация — зло! Да здравствует преждевременная оптимиз
Здравствуйте, Евгений Музыченко, Вы писали:
Pzz>>поэкспериментировать со своей PVS-Studio на моем среднего размера опенсорсном проекте: https://github.com/alexpevzner/sane-airscan
ЕМ>Кстати, каковы нынче примерные нормы оценки размера проекта? Я всегда считал, что мой основной проект с 1.3 Мб исходников — "меньше среднего", и даже слегка переживал за это, а Вы свой с 250 кб называете "средним".
Не знаю. По-мне, так это маленький проект, но я написал "средний", чтобы никого не обидеть