![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Thunderbolt |
|
||||||||
![]() DevRel ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 7.11.2007 Где: Тула Репутация: 10 Всего: 16 |
Меня не покидает когнитивный диссонанс. На форумах обсуждаются возвышенные идеи о написании сверх надежных классов, кто-то рассказывает, что его проект собирается с ключами -Wall -Wextra -pedantic -Weffc++. Господи, где все эти достижения науки и техники? Почему я вижу кругом глупейшие ошибки? Может быть, со мной что-то не так?
![]() Нет, на самом деле я вижу и отличные проекты. Примером может служить библиотека ALGLIB. Это весьма интересная библиотека, с точки зрения кода. Пишется она на Паскале, а потом транслируется в C++, C#. Помимо прочих разных преимуществ, такой подход позволяет выловить много разных ошибок, так как одна и та же программа собирается компиляторами для разных языков. Впрочем, это отдельная история. Возможно, мы как-нибудь, напишем с автором этой библиотеки совместную заметку. Такие приятные исключения, пожалуй, ещё больше усиливают диссонанс. Вот представьте мои ощущения. Я беру сложный пакет численного анализа и не нахожу в нем ошибок. Мне радостно за качественный код. Немного только грустно, что такому человеку PVS-Studio не продать. Ну да ладно. Беру проект OpenCOLLADA. Проверяю. WTF? Других слов я подобрать не могу. Как вам такие конструкторы?
В первом конструкторе промахнулись мимо массива. Во втором скопировали строчку и забыли поменять индекс. Прости читатель, не могу удержаться от картинки. Она очень точно передает мои эмоции. ![]() "Доставляют" и другие конструкторы. Например, вот это мило:
Вместо вызова другого конструктора, создается и сразу уничтожается временный объект. А члены класса остаются неинициализированными. Подробнее. Господи, где те люди, которые, засучив рукава, пишут статьи про C++11, лямбды, Boost.Asio, shared_ptr, constexpr, LINQ. Почему я вижу в коде:
Поделили размер указателя на размер структуры и получили 0. Что вообще здесь хотели сделать? WTF? Впрочем, когда даже понятно, что и как хотели записать в файл, от этого не легче.
Если не заметили баг, то я подскажу. Переменная 'i' не инициализируется: for(size_t i; i<size; ++i). Извините, что поделился всем этим с вами. Мне так легче. Заодно, я естественно скажу, что эти ошибки были найдены с помощью статического анализатора кода PVS-Studio. Расположение этих и некоторых других забавных ошибок я выложил вот в этом текстовом файлике. И как всегда, если будут желающие более тщательно проверить этот проект, я готов поделиться ключиком. Удачи и безбажного вам кода! --------------------
Карпов Андрей, DevRel в PVS-Studio. |
||||||||
|
|||||||||
ToDDIk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 9.3.2011 Репутация: нет Всего: нет |
Эмс. это же с хабра.
http://habrahabr.ru/company/pvs-studio/blog/195928/ Извиняюсь. вижу, что один автор =) Это сообщение отредактировал(а) ToDDIk - 3.10.2013, 13:58 |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Да глупейшие ошибки в солидных проектах повергают в шок, согласен. Как-то решил использовать библиотеку длинных чисел GMP/MPFR, хваленую перехваленую, которую чуть ли не НАСА использует, и за пару часов без всяких инструментов нашел 10 тупейших багов. Нашел бы и больше - дальше просто не стал искать. Дурдом полный в общем. |
|||
|
||||
EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: нет Всего: 2 |
Странно что автор статьи не вставлял фейспалмы на пол экрана когда разбирал проект "Сетевой ГТА 3", там что-то вроде было.
Только после этой статья до меня дошла цель автора: пиар этого инструментария PVS-Studio. Думаю такого рода ошибки прежде всего связанны с чрезмерной..., вобщем авторы кода сильно торопятся, как наркоманы во время ломки получившие в руки дозняк - нужно поскорее скомпилить и порадовадться результату, видать плеть за спинами практически не опускается. |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Ошибки бывают всегда, таже там, где все тщательнейшим образом тестируют (и постоянно). Вот пара цитат из моей подборки 'всяких разных багов'
|
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
EgoBrain, скажу честно - это очень эффективный и полезный способ пиара. Не спроста его посты не блокируются модераторами
![]() Добавлено через 1 минуту и 47 секунд
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |