The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Результаты статического анализа кода библиотеки GTK+

18.03.2016 15:03

Разработчики коммерческого статического анализатора PVS-Studio выполнили проверку библиотеки GTK+. В целом, в основном выявлены опечатки и мелкие недочеты. Из потенциальных ошибок, требующих анализа и исправления, упоминается приведение знакового типа к беззнаковому, указание оператора '=' вместо '==' в сравнении, использование одной переменной для внешнего и вложенного циклов, возможный выход за границы массива, отсутствие проверок на нулевые указатели.

  1. Главная ссылка к новости (http://www.viva64.com/ru/b/038...)
  2. OpenNews: В результате статического анализа кода ядра FreeBSD выявлено более 40 ошибок
  3. OpenNews: Результаты статического анализа кода операционной системы Haiku
  4. OpenNews: Представлены результаты автоматизированной проверки кода ReactOS
  5. OpenNews: Проблемы с некорректной очисткой остаточных данных в клиенте Tor и OpenSSL
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44070-viva64
Ключевые слова: viva64, gtk
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (100) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 18:28, 18/03/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +21 +/
    чет дохрена пвс студии стало - совсем не покупают что ли?
     
     
  • 2.2, A.Stahl (ok), 18:36, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Причём раньше они хоть какой-то уровень своего спама поддерживали -- иногда там даже были куски забавного кода. А что теперь? 3 строки о факте проверки. Фу!
     
     
  • 3.3, Шурек Табуреткин (ok), 18:38, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И главное ж лезут повсюду... Опеннет, ЛОР. Везде все засрали :(
     
     
  • 4.9, Аноним (-), 18:49, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +12 +/
    Главное к опенсорсу никак не относятся. Требуют вьюжлстудию, которой никто из вменяемых разработчиков уж лет 5 не пользуется из-за плохой поддержки стандартов. Полный КГ/АМ.
     
     
  • 5.11, Roman (??), 18:57, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А чем вменяемые пользуются, простите?
     
     
  • 6.15, Аноним (-), 19:25, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Вменяемые пользуются всем тем, куда g++ можно прикрутить без танцев с бубном. QtCreator, нпаример.
     
  • 6.17, Аноним (-), 19:36, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > А чем вменяемые пользуются, простите?

    Gcc и clang с редактором или ide на выбор. А MSVC не умеет C99 в 2016 году, это не инструмент а пародия.

     
     
  • 7.54, другойАнонимус (?), 02:59, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Без clang это не инструмент а пародия.

    Visual Studio умеет в clang. Пруф: http://i.imgur.com/UKjpoER.png

     
     
  • 8.57, Аноним (-), 03:22, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кто будет доделывать за микрософтом их сопли и что о них можно сказать - понятно... текст свёрнут, показать
     
  • 8.59, Аноним (-), 04:33, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    очешуеть ... текст свёрнут, показать
     
     
  • 9.68, Аноним (-), 15:32, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это перемо 1169 а ... текст свёрнут, показать
     
     
  • 10.85, Любитель сладких персиков (?), 21:04, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Там видновс10 в комплекте ... текст свёрнут, показать
     
  • 5.62, Oleg (??), 13:21, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Как же быстро люди объединяются против чужого успеха.
    Ребята делают анализ многих открытых продуктов. И очень интересно читать такие статьи, т.к. можно увидеть и свои огрехи. Плюс приходит понимание чего нужно избегать, чтобы потом долго и нудно не искать трудноотловимые баги.
    Если кому-то не нравится их продукт - хоть аргументируйте. А лучше не читайте вовсе, проходите мимо.
     
     
  • 6.65, Аноним (-), 15:13, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    О, флюродросеры приехали Статьи скорее, статья про огрехи была бы действитель... большой текст свёрнут, показать
     
     
  • 7.75, Andrey_Karpov (ok), 19:12, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На самом деле у нас очень много хороших познавательных статей Несколько примеро... большой текст свёрнут, показать
     
  • 7.101, Sabakwaka (ok), 09:45, 21/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Здесь граждане верят в «стандарты Си»! — они точно знают, что код исполняется одинаково на всех процессорах и еще много всякого.
     
  • 6.74, Andrey_Karpov (ok), 18:57, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Как же быстро люди объединяются против чужого успеха.
    > Ребята делают анализ многих открытых продуктов. И очень интересно читать такие статьи,
    > т.к. можно увидеть и свои огрехи. Плюс приходит понимание чего нужно
    > избегать, чтобы потом долго и нудно не искать трудноотловимые баги.

    Большое спасибо за поддержку.

     
  • 6.86, Аноним (-), 23:33, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Как же быстро люди объединяются против чужого успеха.

    Если ты придешь на микрософтовские форумы и там что-нибудь ляпнешь про Linux - тебя там быстренько забанят. Почему бы не поступать так же с MSовскими рекламерами?

    > Ребята делают анализ многих открытых продуктов.

    Исходники винды они не смогут проверять по техническим причинам. Интересная асимметрия, оказывается без опенсорса эти проприерасы даже пиариться не смогут. Огого.

    > Если кому-то не нравится их продукт - хоть аргументируйте.

    Так уже аргументировали - это ресурс про опенсорц. Какой смысл тут размахивать проприетарным плагином для студии? Это не течнет, а винда никак не основная платформа для gtk+. Факью, идите на винфаке спамить.

     
  • 5.82, Andrey_Karpov (ok), 19:37, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Главное к опенсорсу никак не относятся. Требуют вьюжлстудию, которой никто из вменяемых
    > разработчиков уж лет 5 не пользуется из-за плохой поддержки стандартов.

    По поводу Visual Studio Вы не правы. Это один из наиболее популярных и используемых инструментов разработки.

     
     
  • 6.87, Аноним (-), 23:52, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > По поводу Visual Studio Вы не правы. Это один из наиболее популярных
    > и используемых инструментов разработки.

    Особенно у тех кто что-то связанное с gtk+ программирует. Если вы делаете продукт под винду и студию - при чем тут gtk+ разработчики, для начала? Идите и чикерьте свои сорцы винды и вьюжлстудии, если сможете.

     
     
  • 7.91, Andrey_Karpov (ok), 00:29, 20/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Можем И занимаемся этим тоже Анализ С C открытых проектов компании Microsoft... большой текст свёрнут, показать
     
     
  • 8.93, Аноним (-), 02:23, 20/03/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я конечно понимаю что в пиарщики идут не гроссмейстеры, но догадаться насколько ... текст свёрнут, показать
     
     
  • 9.100, Наркоман (?), 09:08, 21/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А откуда у вас право решать за всех их интерес к опенсорцу мс ... текст свёрнут, показать
     
     
  • 10.103, тоже Аноним (ok), 09:58, 21/03/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Пламенная любовь опеннетовских троллей к опенсорцу M - это их личные половые тр... текст свёрнут, показать
     
  • 4.73, Andrey_Karpov (ok), 18:49, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Забавно. Часто не мы выкладываем какие-то новости. Просто людям нравятся наши заметки, и они хотят ими поделиться. Как например сейчас. Но нас всё журят за рекламу и спам. Интересно наблюдать со стороны.
     
     
  • 5.104, Michael Shigorin (ok), 16:22, 21/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Но нас всё журят за рекламу и спам. Интересно наблюдать со стороны.

    Нас тоже журят, притом то за "рекламу", то за "про вас ничего не слышно". :)
    Не принимайте близко...

    PS: хотя чем ближе к тематике ресурса, тем лучше, конечно.

     
     
  • 6.107, chinarulezzz (ok), 13:36, 22/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >Нас тоже журят, притом то за "рекламу", то за "про вас ничего не слышно". :)

    Потому что ваша "реклама" - хуже, чем если "про вас ничего не слышно" было бы.

    Промотал новости на опеннете до 2014: starterkits, госзакупки, бабах с лицензиями.

    Причём, starterkits рекламирует страшный дизайн и падающие программы. А госзакупки и лицензии - проблемы и юридическую волокиту.

    Вот таки дела.

    P.S. Не в обиду, Миш. Знаю, говорят «критикуя - предлагай». Но мне нечего предложить.

     
  • 3.21, Служба ИБ (?), 19:50, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А здесь не куски кода?
    http://www.viva64.com/ru/b/0383/
     
     
  • 4.23, A.Stahl (ok), 20:08, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ты предлагаешь мне бегать по каким-то ссылкам чтобы ознакомиться с рекламой?
    Это уже за гранью моего представление об адекватности...
     
     
  • 5.25, Michael Shigorin (ok), 20:32, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ты предлагаешь мне бегать по каким-то ссылкам чтобы ознакомиться с рекламой?
    > Это уже за гранью моего представление об адекватности...

    Ну так адекватнЕйте же наконец -- сами просили ("иногда там даже были куски забавного кода"), сами и обижаетесь, когда кто-то не поленился подсказать ответ.

    А ребята нормальные, только бы и впрямь ещё под линукс спортировались, что ли...

     
     
  • 6.26, Аноним (-), 21:01, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >только бы и впрямь ещё под линукс спортировались, что ли...

    Вот именно, а то эти товарищи имеют наглость регулярно спамить рекламой своей PVS-Studio на сайтах для Linux, и при этом их продукт можно купить только как плагин к Microsoft Visual Studio, которая в свою очередь доступна только под ОС Windows. И после этого они удивляются негативной реакции Linux сообщества на их рекламу - мало того что PVS-Studio проприетарщина, так ещё и только под Windows да ещё и только под микрософтовский компилятор.

     
     
  • 7.31, виндотролль (ok), 21:47, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    дружище, тебе забесплатно проверили твой любимый GTK+ на ошибки. Сказал бы спасибо.

    Версию под линукс они могут продать под заказ, коробочной нету.

     
     
  • 8.32, Яйцассыром (?), 22:03, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    то есть на складе есть, а в магазине нет привезут только под заказ и без коробк... текст свёрнут, показать
     
     
  • 9.35, виндотролль (ok), 22:29, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    отличается совсем другим позиционированием Почему-то, когда вам предлагают вмес... текст свёрнут, показать
     
     
  • 10.50, gogo (?), 01:41, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Их никто не заставляется делать чтобы работало всегда и везде Есть ынтерпрайзны... текст свёрнут, показать
     
     
  • 11.52, виндотролль (ok), 02:46, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот вы так говорите, как будто коммерческая компания вам чем-то обязана Я уже л... текст свёрнут, показать
     
     
  • 12.53, Led (ok), 02:58, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А толку-то - доказывать Если Я уже лет 5 как пользуюсь только линуксом с ни... текст свёрнут, показать
     
     
  • 13.55, виндотролль (ok), 03:05, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Тот 8212 кто считает, что ему обязан весь мир ... текст свёрнут, показать
     
  • 12.66, Аноним (-), 15:21, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Разумеется обязана А что интересно, мы за свои деньги должны им ещё и дифирамбы... текст свёрнут, показать
     
  • 12.105, Michael Shigorin (ok), 16:24, 21/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Даже так А сами-то они об этом где-то пишут или без клещей и везения не узнать... текст свёрнут, показать
     
  • 10.58, Аноним (-), 04:20, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    С нетерпением жду этого момента Пользователи откровенного г-на должны приплачив... текст свёрнут, показать
     
  • 9.36, виндотролль (ok), 22:31, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    понятия не имею Но я бы предположил, что итоговая цена будет, возможно, даже вы... текст свёрнут, показать
     
  • 8.33, Илья (??), 22:03, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    команда cp сломалась ... текст свёрнут, показать
     
  • 8.64, Аноним (-), 15:06, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Версию под линукс они продать не могут Вообще не могут, потому что её нет, и не... большой текст свёрнут, показать
     
     
  • 9.71, maximnik0 (?), 16:28, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну насчет Watcom C -лучшим я бы его не назвал ,исследовал опен версию Оптимизац... текст свёрнут, показать
     
  • 9.83, виндотролль (ok), 20:39, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, я помню, что на хабре представители компании на вопрос о линукс версии предл... текст свёрнут, показать
     
     
  • 10.84, Andrey_Karpov (ok), 21:03, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не читайте этот сборник слухов в и предположений Если Вы сотрудник компании, то... текст свёрнут, показать
     
     
  • 11.92, Аноним (-), 01:42, 20/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    То есть одно из главных утверждений 8212 что вы продаёте только компаниям 8... текст свёрнут, показать
     
     
  • 12.94, Andrey_Karpov (ok), 10:08, 20/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да Причина - индивидуальным разработчикам не нужен статический анализатор Или ... большой текст свёрнут, показать
     
  • 7.76, Andrey_Karpov (ok), 19:17, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > PVS-Studio проприетарщина, так ещё и только под Windows да ещё и
    > только под микрософтовский компилятор.

    Я бы сказал по-другому. Наш клиент — это человек, обычно работающий в среде Windows в среде Visual C++. Именно поэтому мы ориентируемся на него в разработке, в статьях, везде. Но на самом деле PVS-Studio не плохо умеем gcc, (в Win mingw), clang. Хотя конечно поддерживаем их не так полноценно, как Visual C++.


     
     
  • 8.88, Аноним (-), 23:56, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    При этом не понятно что вы забыли на опеннете, спамеры Тут процент таких людей ... текст свёрнут, показать
     
  • 6.56, Аноним (-), 03:07, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А ребята нормальные, только бы и впрямь ещё под линукс спортировались, что ли...

    Эти нормальные ребята к опенсорцу отношения не имеют. Статических анализаторов сейчас много, coverity сканирует открытые проекты на регулярной основе.

    Продажа услуг по проверке сорцов - более-менее понятна. А продажа каких-то блобов для студии - вообще о чем? И почему на опеннет?

     

  • 1.4, АнонимХ (ok), 18:39, 18/03/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > указание оператора '=' вместо '==' в сравнении

    Всегда стараюсь писать if(CONSTANT == variable). Но мне говорят: ты чо, сейчас же 21 век, никто уже не делает ошибок '='/'==', это не модно. А по-моему, это должно впитываться на уровне рефлексов у сишников, как ++i (вместо i++) у плюсплюсников.

     
     
  • 2.5, Аноним (-), 18:41, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > как ++i (вместо i++) у плюсплюсников.

    Интересно было бы посмотреть на компилятор, который бы это не поправил, и на код, в котором это было бы критично

     
     
  • 3.7, АнонимХ (ok), 18:46, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Это сторонники i++ должны доказывать правильность своей позиции. А то дойдем и до того, что const не нужно. ++i-оператор проще, с минимальной семантикой, поэтому его использование должно быть очевидно, i++ же - оператор с более сложной семантикой, его использование следует обосновать.

    Может еще и for(;;) vs. while(true) вызывает у вас вопрос? :)

     
     
  • 4.34, Илья (??), 22:06, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Может еще и for(;;) vs. while(true) вызывает у вас вопрос? :)

    к черту бизнесс-логику! даешь микрооптимизации

     
  • 4.69, Аноним (-), 16:14, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    const - промашка языка. Но, на сколько я знаю, в gcc можно переключит на mutable
     
  • 4.70, Аноним (-), 16:15, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это сторонники i++ должны доказывать правильность своей позиции

    Никто никому ничего не должен

     
  • 4.98, Sabakwaka (ok), 00:27, 21/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Это сторонники i++ должны доказывать правильность своей позиции. А то дойдем и
    > до того, что const не нужно. ++i-оператор проще, с минимальной семантикой,
    > поэтому его использование должно быть очевидно, i++ же - оператор с
    > более сложной семантикой, его использование следует обосновать.
    > Может еще и for(;;) vs. while(true) вызывает у вас вопрос? :)

    Ты ИДИОТ.

     
  • 3.16, Аноним (-), 19:28, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > код, в котором это было бы критично

    На интах уже много лет пофиг. А вот для всяких итераторов все еще важно. Проблема в том, что постфиксный инкремент должен запомнить "старое" значение и вернуть его после инкремента. А вот префиксный может вернуть ссылку на себя сразу после модификации.

    Собственно создание временного объекта для "старых" значений в постфиксном инкременте все еще не каждый компилятор оптимизирует (даже если итератор на самом деле превращается в указатель и все функции inline).

     
     
  • 4.40, all_glory_to_the_hypnotoad (ok), 23:09, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >  ... все еще не каждый компилятор оптимизирует (даже если итератор на самом деле превращается в указатель и все функции inline).

    Это всё равно не имеет значения, даже без оптимизации такая операция довольно дешёвая. Проблемы создают только совсем нетривиальные итераторы.

     
     
  • 5.77, Andrey_Karpov (ok), 19:26, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Это всё равно не имеет значения, даже без оптимизации такая операция довольно
    > дешёвая. Проблемы создают только совсем нетривиальные итераторы.

    Смысл писать ++i есть. Моя статья на эту тему.

    Есть ли практический смысл использовать для итераторов префиксный оператор инкремента ++it, вместо постфиксного it++: http://www.viva64.com/ru/b/0093/

    И другая статья, написанная по мотивам моей:

    Pre vs. post increment operator – benchmark. http://silviuardelean.ro/2011/04/20/pre-vs-post-increment-operator/

     
  • 2.6, Аноним (-), 18:44, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И конечно же компилируете свое ... с выключенными варнингами ?
     
     
  • 3.10, АнонимХ (ok), 18:56, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Конечно нет, не переводите тему. Варнинги так же должны рефлекторно восприниматься как потенциальные ошибки. Желательно Werror. А вот статический анализатор еще не использовал, кстати.

    Виндовозы грешат отключением варнингов, чаще всего. Во-первых, там в стандартной библиотеке и windows-хедерах варнингов опой жуй при сборке студией. А во-вторых, проще, естественно, мышкой в свойствах проекта выбрать низкий уровень варнингов, а не осознавать, что за сообщения и как их исправить\подавить по уму

     
  • 3.41, all_glory_to_the_hypnotoad (ok), 23:11, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Это вполне легитимная и используемая операция (т.е. присваивание в if(...) ), никакого предупреждения не будет.
     
     
  • 4.42, all_glory_to_the_hypnotoad (ok), 23:14, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    да, предупреждение на самом деле есть, предлагает в скобки завернуть. Ну тогда вообще пробелмы нет.
     
     
  • 5.44, Led (ok), 23:22, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    да, и присаоение в if'е - не от большого ума.
     
  • 2.18, Аноним (-), 19:40, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Всегда стараюсь писать if(CONSTANT == variable). Но мне говорят: ты чо, сейчас
    > же 21 век, никто уже не делает ошибок '='/'==', это не модно.

    Дарю идею:
    #define IF (constant, var) ... и потом в коде IF (constant, var).

     
  • 2.20, Другой Омномним (?), 19:49, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Всегда спотыкаюсь, когда читаю такой код. Привыкнуть конечно можно, но считаю, что машина должна подстраиваться под человека, а не наоборот. Компиляторы давно предупреждают о присвоении в условии, поэтому нет смысла извращаться.
     
     
  • 3.24, АнонимХ (ok), 20:10, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Наверное еще на int const n; вместо const int n; спотыкаешься? А ведь это best practice для С и плюсов, повышает внимание к деталям при чтении кода

    Подстройка машины под человека - это не про С, не тот уровень

     
  • 2.39, Annimzus (ok), 23:03, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > как ++i (вместо i++) у плюсплюсников.

    чо, серьезно?

     
     
  • 3.60, Мяут (ok), 12:35, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Саттер об этом пишет в "Сложных задачах". Вот тут: http://herbsutter.com/2013/05/13/gotw-2-solution-temporary-objects/ в разделе "The iterator increment uses postincrement".

    Если в кратце, постинкремент требует сохранения временного значения (так как возвращает значение до инкремента), а преинкремент - нет.

     
     
  • 4.63, soarin (ok), 14:12, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А ничего то, что его величество компилятор это дело крутит как хочет?
    Причем разные по разному...
     
  • 2.49, Аноним (-), 00:09, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А если надо сравнить две переменные?
     
  • 2.67, Аноним (-), 15:26, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Всегда стараюсь писать if(CONSTANT == variable). Но мне говорят: ты чо, сейчас
    > же 21 век, никто уже не делает ошибок '='/'==', это не модно.

    Код должен быть в первую очередь понятным, а уже потом всё остальное, поэтому только variable == CONSTANT. В случае с = все современные компиляторы напишут варнинг и попросят заменять = на == или поставить дополнительные скобки. И никто кроме компилятора не спасёт вас в случае variable1 == variable2.

    > А по-моему, это должно впитываться на уровне рефлексов у сишников, как ++i (вместо i++) у плюсплюсников.

    Нет, это ровно такой же бред.

     

  • 1.12, Я (??), 19:03, 18/03/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да они задрали спамить, когда уже загнутся?
     
     
  • 2.45, Аноним (45), 23:23, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    задрал спамить, загнись.
     

  • 1.13, Андрей (??), 19:17, 18/03/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Раньше они по крайней мере открывали баги, а с Gtk+ не пожелали. Странно.
     
     
  • 2.46, Led (ok), 23:23, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Раньше они по крайней мере открывали баги, а с Gtk+ не пожелали. Странно.

    Что "странно"? Просто не поместилось нигде.

     
     
  • 3.48, Андрей (??), 00:03, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Отчёт на листе формата А4? С чего бы это не поместилось?
     
  • 2.79, Andrey_Karpov (ok), 19:29, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Раньше они по крайней мере открывали баги, а с Gtk+ не пожелали.

    При проверке open source проектов мы всегда сообщаем разработчикам. Если мы публикуем статью о проверке этого проекта, то ссылку стараемся отправить авторам проекта. Если мы проверили проект, но ошибок на отдельную статью не набралось, то мы все-равно отправляем авторам то, что есть.

    При этом мы никогда не отправляем патчи и не открываем отдельные баги. Причин этому сразу несколько:

    * Мы не знакомы с кодом и не знаем, реальную ли ошибку мы в нем нашли или все-таки нет. Для понимания этого нужно очень глубокое погружение в проект.

    * Это очень много работы. Сейчас в базе уже около 10000 ошибок http://www.viva64.com/ru/examples/ . Представляете какой это объем работ?

    * Наконец цель написания наших статей – показать возможность анализатора кода, который мы разрабатываем. То есть показать, что наш инструмент реально находит ошибки в настоящем, живом коде. Нам надо показать только лишь, что инструмент их находит.

     
     
  • 3.89, Аноним (-), 00:20, 20/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    То-есть фирмочка всучит бинарный плагин, а дальше #%$тесь как хотите, дорогие клиенты, сами разбирая 10 000 ошибок.

    Тем временем, есть уже несколько онлайн сервисов, которые помогают заниматься вопросами качества, интеграции и отлова ошибок. В случае открытых проектов они из git проекта таскают коммиты и присылают отчеты, близко к реальному времени. Поэтому у них работа строится в виде накосячил - получи репорт через полчаса. А не так что вот тебе 10 000 ошибок раз в 10 лет и бодайся как умеешь. А потом эти люди с вьюжлстудией удивляются почему их считают за каких-то динозавров, с такими то практичными технологиями.

     
     
  • 4.99, Аноним (-), 02:25, 21/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > сами разбирая 10 000 ошибок

    Продают анализатор, но не услуги по исправлению найденных им ошибок. Ты чего ожидал, что он сам исправлять ошибки будет? А может и код писать? А на кой хрен ты тогда нужен?


    > — Во-первых, пирожного! Во-вторых… Вы, чего, и пальцы за меня загибать будете?
    > — Ага!
    > — Во-вторых, конфет! В-третьих… ну, загибайте, загибайте! А в-третьих, мороженого…
    > (позже)
    > — Вы, чего, и конфеты за меня есть будете?
    > — Ага!

     
  • 3.106, Андрей (??), 05:17, 22/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Если мы публикуем статью о проверке этого проекта, то ссылку стараемся отправить авторам проекта.

    Просто в конце статьи вы не упомянули, что сделаете это. И какому именно автору/ам вы отправите. Ведь проект имеет публичную почтовую рассылку.

    Да, действительно, 20 марта исправления были внесены в Gtk+. Не уточнял ещё все ли, но те, что видел вошли в релиз Gtk+ 3.20.

    > При этом мы никогда не отправляем патчи и не открываем отдельные баги

    В GNOME можно даже патчи слать, они и их успешно игнорируют. Удивлён, что в этот раз хватило просто ссылки на статью. Впечатлились, наверное, постыдились и не стали откладывать на год-другой-третий.

    Кстати, а пробовали уже coreboot обследовать? Должно быть крепкий орешек, т.к. low level C. А FreeRTOS, contiki-os?

     

  • 1.14, Старик (?), 19:17, 18/03/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    >приведение знакового типа к беззнаковому, указание оператора '=' вместо '==' в сравнении, использование одной переменной для внешнего и вложенного циклов

    Ох…еть! Это, типа, «опечатки и мелкие недочеты»?! Тогда и «rm -rf / usr/lib/mylib» это просто «мелкий недочёт».

     
  • 1.19, Аноним (-), 19:43, 18/03/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >  указание оператора '=' вместо '==' в сравнении
    > приведение знакового типа к беззнаковому

    А компиляторы разве не ругаются на такое?

     
     
  • 2.22, тоже Аноним (ok), 20:01, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    for(int i = 0; i < child.size(); ++i) {
      if(value = child[i].value) {
        useValue(&value);
      }
    }

    В этом коде - то самое приведение (которое никак не приведет к проблемам, если child - это, например, дочерние элементы формы, и их никак не может быть больше сотни).
    А также используется = в if, только не "вместо", а именно так, как задумано - и компилятор, естественно, спокойно это воспринимает. Впрочем, отличить опечатки такого рода от задуманного присвоения компилятор, увы, не в состоянии.

     
     
  • 3.27, другое Имя (?), 21:08, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Впрочем, отличить опечатки такого рода от задуманного присвоения компилятор, увы, не в состоянии.

    if((value = child[i].value))

    И никакого предупреждения от компилятора не будет.

     
     
  • 4.28, Анон1 (?), 21:26, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Давненько на C писал, но -Wall -Wextra должно помочь
     
  • 4.29, Андрей (??), 21:27, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Верно, компилятор предупреждает пока не найдет доп. скобки.
     
  • 4.37, тоже Аноним (ok), 22:43, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, уж если стараться над кодом, то стоит явно прописать сравнение с нулем, чтобы не только компилятору все было ясно с первого взгляда.
    Речь не о хороших привычках, стиле и прочем, а о том, что сама семантика языка вполне допускает то, на что компилятор и статический анализатор делают стойку.
    И польза от переписывания всех подобных мест в проекте масштаба GTK+ неочевидна - во-первых, это куча человекочасов специалиста, во-вторых, легко можно наделать новых ошибок при таких исправлениях. Или обнаружить, что одна ошибка компенсировалась другой, а теперь это сломано, и надо лезть глубже.
     
  • 3.38, Аноним (-), 22:46, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    if(int value = child[i].value) уже явно не очепятка, но это уже кресты.
     
     
  • 4.47, Led (ok), 23:25, 18/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > if(int value = child[i].value) уже явно не очепятка, но это уже кресты.

    Кресты. Крассные. Т.е. - клиника.

     

  • 1.51, Андрей (??), 02:36, 19/03/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вот бы PVS-Studio могла бы найти такой баг, как в path_name() в git. https://www.opennet.ru/opennews/art.shtml?num=44068
     
     
  • 2.78, Аноним (-), 19:26, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Называется american fuzzy lop

    http://lcamtuf.coredump.cx/afl/

     
     
  • 3.90, Аноним (-), 00:25, 20/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Называется american fuzzy lop

    Отличный тул, опенсорсный и в отличие от плагина для студии работает под Linux. Но все-таки он заходит к проблеме с другого бока, это не статический анализ а осмысленная "атака". Есть еще asan/ubsan/tsan - эти для чуть иных ситуаций, но в пару к afl их взять самое то.

     

  • 1.61, Аноним (-), 12:43, 19/03/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >...использование одной переменной для внешнего и вложенного циклов,...

    это должен отлавливать компилятор

     
     
  • 2.80, Andrey_Karpov (ok), 19:33, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >>...использование одной переменной для внешнего и вложенного циклов,...
    > это должен отлавливать компилятор

    Ничего он никому не должен. И подтверждение этому ошибки, которые мы нашли во многих проектах: http://www.viva64.com/ru/examples/V535/

     

  • 1.72, Аноним (-), 17:52, 19/03/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Толку от этого маловато - в C/C++ с этой задачей хорошо справляется компилятор. Такие утилиты нужны в безумно-типизированных, плохо-спроектированных языках, типа JavaScript.

    А для отлова серьёзных ошибок у проекта должны быть хорошо документированные требования и грамотно написаннные функциональные тесты.

     
     
  • 2.81, Andrey_Karpov (ok), 19:34, 19/03/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Толку от этого маловато - в C/C++ с этой задачей хорошо справляется
    > компилятор. Такие утилиты нужны в безумно-типизированных, плохо-спроектированных языках,
    > типа JavaScript.

    Не совсем понятно, про что речь. Но если о том, что для С/С++ статический анализатор не нужен, то это очень далеко от истины. Как раз вот здесь то он очень даже нужен.
    Proof: http://www.viva64.com/ru/a/0084/

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру