Свежие комментарии
| Title | Comment |
|---|---|
| И судя по всему - это |
И судя по всему - это нисколько не мешало жить! |
| Хо-хо, тут через последний |
Хо-хо, тут через последний clang прогнали FreeBSD и понаходили вот такого: struct X { ... } struct X *obj; memset(obj, 0, sizeof(obj)); И это после многих лет жизни с gcc -Wall -Werror |
| 1) - да, конечно. Я лишь про то, что до текущего года - виз |
1) - да, конечно. Я лишь про то, что до текущего года - визит в инспекцию предполагался, полностью перейти на почтовые/электронные сношения с инспекцией было невозможно по самой процедуре. 2) Я, вероятно, тоже заверю, когда буду сдавать декларацию (в марте, как всегда). Но у нас инспекция переехала в новое здание и изменились процедуры. В 11-м и ранее - печать ставили в том же окошке, куда декларацию суешь, в прошлом году - завели отдельное окно, работающее не каждый день, а в этом - нужно вызвонить своего инспектора, дабы он к тебе ножками снизошел с 2-го этажа. Прошивать-подписывать-складывать - в теории, да, надо. На практике это можно будет делать когда выездная проверка уже звонит в дверь. |
| 1) "Декларация с печатью" к порядку ведения/заверения КУДиР |
1) "Декларация с печатью" к порядку ведения/заверения КУДиР ведь полюбому никак не относится, не так ли? 2) Я на всяк случай в этом году заверил, благо это 5 минут, а форма книги всё равно старая, место для подписи предполагается. Насчёт полностью электронной отчётности, кстати, ничего вроде не менялось - всё равно надо в конце года распечатывать, прошивать, подписывать и складывать в архив. |
| для С++ с его указателями гораздо полезнее valgrind, который |
для С++ с его указателями гораздо полезнее valgrind, который может проверять очень многие вещи. |
| Ну собственно да нормальный цикл использования таких штук |
Ну собственно да нормальный цикл использования таких штук это до/после компиляции или хук на коммит |
| Не. Я бы и эту не пробовал - но на меня надавили из diigiKam |
Не. Ну я и решил сам попробовать - и мне не понравилось. Возможно, если перед каждой компиляцией это прогонять, то многие глупые опечатки будут половлены. А на оттестированном продукте сигнал-шум какой-то негодный получается. |
| а ты отечественный продукт, у них еще радуга в логотипе и мн |
а ты отечественный продукт, у них еще радуга в логотипе и много постов на хабре, не пробовал? вроде не так плох собстно насколько я слабо понимаю как они работают, они не делают предметного анализа или на входных данных. они просто парсят чем-то компилятороподобным код в дерево, а потом ищут в этом дереве известные им паттерны, не учитывая диапазон данных и т.д. насчет того, что это шум я не согласен, если честно, это как миннимум плохой стиль. большой практики с плюсами и анализаторами у меня нет, но вот с перлом чего мы только не находили благодаря перл-критику :) |
| Меж тем - этот самый |
Меж тем - этот самый интеловский анализатор я тут пытался использовать для поиска утечки хендлов файловых. |
| > Так ведь при тестировании |
> Так ведь при тестировании все вылезет. Вот конкретно в этом for-е и printf-е все как-то работало, цикл рвался внутри еще по одному условию, а в принт не приходили данные больше 32 бит, то есть ошибки увидел только с -Wall. Да, достаточно редкие ошибки, и у нас почти такая же история - есть чужие .h-файлы которые выдают кучу нелепых варнингов. Но с -Wall -pedantic пытаюсь собрать хотя бы раз в месяц, мало ли чего? > Оно это ловит и правильно ловит, но с моей точки зрения - это false positive. Валгринд, кстати, меня тоже в некоторых местах раздражал, казалось что слишком уж умничает железяка чертова. Но потом, подумав, понял что правильно он возмущается. Теперь стараюсь как-то его умиротворить. В некоторых местах, само собой, не получается, BerkeleyDB например что-то там не инициализирует, pthreads текут и т.п., но по возможности стараюсь чтоб было без предупреждений |
| Так ведь при тестировании все |
Так ведь при тестировании все вылезет. Конкретно в LibRaw - куча унаследованного кода, который на Wall дает миллиарды триллионов ложных срабатываний, а править эти места не хочется. В частности по той причине, что много кода генерируется именно из dcraw.c, который мержится средствами git. Если в моей копии поправить - мержиться перестанет. Ну и с Valgrind/подобными - тоже ведь не так просто. Я пользуюсь Intel Inspector (по смыслу то же самое). Да, что-то он ловит, но я вот скажем аллоцированное на старте программы (гарантированно один раз) на финише обычно не освобождаю, ибо незачем. Оно это ловит и правильно ловит, но с моей точки зрения - это false positive. |
| А как народ умудряется без |
А как народ умудряется без -Wall хотя бы иногда (а лучше еще и -pedantic для верности)? Я недавно вылавливал совершенно адовые ошибко-опечатки, которые глазами трудно заметить, типа "for (...;;<условие>)" или какие-то ошибки в snprintf-спецификаторах. Ну, можно, наверное, идеально писать, но это же не всем дано. Но это и правда не часто как-то нужно. А вод динамический valgrind, в режиме проверки памяти/текущих ресурсов - прекрасен. Ну, опять же, кто-то, наверное, делает все c RAII, аккуратненько и с первого раза, но я так не умею, от первого знакомства с валгриндом вообще аж вспотел, настолько много всего текло и вообще удивительно как работало |
| Мы используем, тот же Coverity. False positive'ов много, и в |
Мы используем, тот же Coverity. False positive'ов много, и вычищать было мучительно, но по ощущениям - польза от этого действия есть. Глупости всякие успешно отлавливает, вроде вот таких - http://trac.nginx.org/nginx/changeset/4937/nginx. |
| повторюсь -- достаточно определить layout и Layout1 через ен |
повторюсь -- достаточно определить layout и Layout1 через енум, после этого даже ифы работают |
| 1) Ну я согласен с тем, что так писать не надо. Но в том вид |
1) Ну я согласен с тем, что так писать не надо. Но в том виде, в каком оно написано - это не ошибка и это видно если анализировать не только саму функцию, но и окружение. 2) Про unsigned short - я написал, что согласен именно по той причине, что domain specific неизвестен. 3) Про диапазон: дальше эта самая (unsigned)var < 5 используется для индексации массива - и ругается оно, что отрицательный индекс у массива. Ну, в тех местах, которые видел. |
| Ну то есть идея в том, что - |
Ну то есть идея в том, что Интересная мысля, надо ее подумать. |
| Да-да-да, у меня такое тоже бывало, что думаешь "от какая ца |
Да-да-да, у меня такое тоже бывало, что думаешь "от какая цаца, не нравицца ему видите-ли! да идиты нафег!", а потом через какое-то "ух-ёёёё..." и дальше эхом от стен "мать-мать-мать..." ))) |
| > Но в реальной жизни бывает два вида layout - и это явно пр |
> Но в реальной жизни бывает два вида layout - и это явно прописано в вызывающем коде. Т.е. у машинки достаточно данных, чтобы сообразить, что это не 'High impact', а просто неаккуратненько. Э, нет, батенька, не согласен я с вами тут. > С этим я не хочу спорить - формально машинка права, а по факту в этих unsigned short живут размеры картинки и до 32767 они в ближайшие годы не дорастут. ))) "640кб хватит всем!", "до 2000-го года ещё много лет, успеем поправить!" :) > В частности, любимый коффиновский метод проверки диапазона значений 0..N одним действием машинка просто не чует: А чо-как ругается? Вполне нормальный метод, имхо... По вопросу: я специально не использую, но обычно ставлю студию на наивыший уровень ворнингов и если что возникает - стараюсь или переправлять, или если однозначно в данном случае не нужно - подавлять. Несколько раз меня эти варнинги ОЧЕНЬ спасали от тяжелого и трудноуловимого дебуга, поэтому просто принял для себя решение по возможности сразу писать правильно и таки прислушиваться в варнингам. Хотя специально отдельными тулзами обычно не пользуюсь. Согласен с тем, что в идеале это надо делать системным образом, но по моему опыту даже вот такое эпизодическое следование мне лично здорово помогало. |
| Есть такое мнение про системы |
Есть такое мнение про системы статического анализа (да и вообще про все отладочно-дебажные тулзы, про тот же valgrind) - их нужно использовать более-менее регулярно, на всём процессе разработки. |
| Нет никакого апстрима. Это именно contributed, конкретно в L |
Нет никакого апстрима. Это именно contributed, конкретно в LibRaw. Я с благодарностью такие куски кода принимаю, но что я при этом думаю - я никому не скажу! |
| а я уже привык везде лепить, только из-за этого варнинга пог |
а я уже привык везде лепить, только из-за этого варнинга поганого. Проще уже в переменную что-то сунуть, чем каждый раз мусор на экране смотреть.. |
| отправь патчи в апстрим! кстати, достаточно просто enum |
отправь патчи в апстрим! |
| Это чужой (contributed) код, пальцем не дотронусь! |
Это чужой (contributed) код, пальцем не дотронусь! |
| а в твоем случае надо просто переписать через case и enum и |
а в твоем случае надо просто переписать через case и enum и варнинга не будет. |
| я не про конкретно этот код. а про случаи типа когда первая |
я не про конкретно этот код. |
| а, вот в таком разе я особо не сравнивал, но мне показалось |
а, вот в таком разе я особо не сравнивал, но мне показалось что примерно одинаково, все же. |
| gcc с -Wall ложно срабатывает чаще, чем этот Coverity. Т.е. |
gcc с -Wall ложно срабатывает чаще, чем этот Coverity. Т.е. предупреждений будет не 107, а бешеные мильены на конкретном коде. |
| Не, по смыслу оно право - если когда-нибудь появится Layout3 |
Не, по смыслу оно право - если когда-нибудь появится Layout3, то хорошо бы иметь переменную инициализированной хоть как-то. Но в данном наборе исходников - ошибки нет, да. |
| как-то не хочется из-за его паранойи лепить бессмысленную ин |
как-то не хочется из-за его паранойи лепить бессмысленную инициализацию |
| Ну для gcc-то несложно подправить исходник так, чтоб больше |
Ну для gcc-то несложно подправить исходник так, чтоб больше не ругался. |