Pull to refresh
83
0
Павел @Paul

User

Send message
Ну я пользуюсь Vim в коммерческой компании (на работе), так что ваше изначальное утверждение про «ни в одной коммерческой компании не используют» уже не верно. И некоторые коллеги мои в текущей компании и бывшие коллеги в других компаниях тоже пользуются. Их не много, но они есть. Я же не редактирую 100% текста в IDE, весь plain text, что не в IDE (которых, кстати, несколько) — в Vim. Ну и в тех IDE, которые это нормально умеют, у меня включен Vim mode.

Вы вот вроде пишете разумные вещи в соседних ветках, предлагаете не напрыгивать на mc, его пользователей и авторов, а сами, не разобравшись в том, почему люди любят Vim и Emacs, напрыгиваете на них.
Почему ни в одной коммерческой компании не используют vim или emacs в качестве IDE

Потому что они не IDE, а текстовые редакторы?

Потому что это не удобные способы работы с текстом, дающие низкую продуктивность, и имеющие неадекватно высокий порог входа.

Потому что это супер удобные способы работы с текстом, дающие высочайшую продуктивность, но имеющие неадекватно высокий порог входа. FTFY.
И да, как я уже написал выше, они — не IDE, они очень крутые текстовые редакторы, из которых некоторые пытаются сделать IDE.
Руководство Хэнфордского комплекса объявило об утечке 35000 галлонов (ок. 130 м3) радиоактивных отходов.

Leak estimates surge from 70 gallons to 3,000-3,500 gallons
Круто у вас 3500 галлонов превратились в 35000.
Ну, что можно сравнивать (связанное со скоростью загрузки с диска) ещё? Скорость запуска какой-то программы?

Время пожатия в tar миллиона мелких файлов, например, или время компиляции проекта.
Государство лучше поменять до того, как оно вас забанит.
начало/конец строки Mod1+[wq]
Просто интересно, почему 'q', а не 'e'?
То, что приложение установлено «из коробки», не делает его «системным». С точки зрения уровня доступа эти приложения равноправны.
В качестве альтернативы можно редактировать OpenStreetMap вместо яндекс.карт, для навигации по ним не нужен интернет и подтекающий яндекс.навигатор.
Какой смысл в 2015 году продолжать поддерживать 32-битную версию приложения? Если ее выбросить, вдвое уменьшится время на сборку билдов и уйдет порядочная часть #ifdefов.
32-битный фар с незапамятных времен умеет заходить в неэмулируемый System32. А 32-битный плагин RegEdit под него — в 64-битный реестр.
Потому что в 64 битах будет
error C4235: nonstandard extension used: '__asm' keyword not supported on this architecture
Вы в обращении в ФАС ссылались на «секретные контракты Google и вендоров»?
Об этом наверняка написано где-то на страничках гугла. Не поделитесь ссылочкой?
Банк «органам» по запросу и так всё о вас расскажет. Что вы спрятать то пытаетесь и от кого?
На то, как выглядит Coverity можно посмотреть загуглив «Coverity screenshot» например.

image

А можно посмотреть официальное демо-видео:
.
почему разработчики того же ядра или другие люди связанные с Linux, свободной, чистокровно открытой платформой не гнушаются Coverity, с помощью которой постоянно проверяет ядро мейнтейнерами? Ведь это чистая воды поприетарщина которая от вас отличается лишь масштабом финансирования

Coverity отличается от PVS-Studio очень сильно, а не «лишь масштабом финансирования». Coverity пишет предупреждения в стиле «А вот если условие в if (...) в строке 120 будет true, а счетчик i в for (i =… ) в строке 130 будет 7, то в строке 140 в выражении a[i] у вас будет выход за границы массива, потому что массив объявлен в строке 50 как int a[N], а N определен в строке 10 как int N = 5». PVS-Studio так делать не умеет.
А, разобрался, у меня была в настройках вбита лицензия ещё с 2009 года. Вытер и лицензия стала Trial.

Проверил несколько файлов, отключил 64-битные предупреждения, оставил только GA:
Туча предупреждений на код в файлах c:\Windows Kits\Include\shared\minwindef.h, c:\Windows Kits\Include\um\winnt.h, winuser.h, shellapi.h и пр.
V677 Custom declaration of a standard 'SHORT' type. The system header file should be used: #include <WinNT.h>. winnt.h 344
Исключил весь C:\Windows Kits, не ясно только, почему он не исключен по умолчанию.

V668 There is no sense in testing the 'task' pointer against null, as the memory was allocated using the 'new' operator. The exception will be generated in the case of memory allocation error.
В классе определен operator new, который возвращает NULL при неудаче.

V668 There is no sense in testing the 'newPointee' pointer against null, as the memory was allocated using the 'new' operator. The exception will be generated in the case of memory allocation error.
В шаблонной функции вызывается newPointee = new T();, где T — параметр шаблона. Откуда уверенность, что в T не перегружен operator new?

V512 A call of the 'memcmp' function will lead to underflow of the buffer '& OpPattern'.
V512 A call of the 'memcmp' function will lead to underflow of the buffer '& maxSupportedOpPattern'.
Анализатор решил, что программист должен сравнивать структуры полностью, а в коде сравниваются только первые 12 байт «префикса».

V571 Recurring check. The 'if (((HRESULT)(hr)) >= 0)' condition was already verified in line 2124.
Ну как бы да, лишняя вложенная проверка. Но это никак не влияет на работоспособность кода.

V580 An odd explicit type casting: (void * *) & pInterface. Consider verifying it.
Типичный каст для COM. Проверифаить все вызовы QueryInterface не представляется возможным.

Ну что я о плохом да о плохом:
Нашел одну ошибку типа
V519 The variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 7195, 7196.
Другое дело, что это скорее всего где-то дальше в коде обрулено, но всё равно надо починить.

V690 The 'Class' class implements the '=' operator, but lacks a copy constructor. It is dangerous to use such a class.
Эти предупреждения тоже стоит изучить детальнее.

Но в общем и целом мало что изменилось — реальных ошибок очень мало и их очень тяжело выискивать среди десятков и сотен приведеных выше false positiveов. В общем, как я уже писал выше — добавлять в CI и чинить/глушить новые предупреждения. Времени на починку 1000 подобных предупреждений, из которых менее 1% валидны никто не даст.
Скачал свежий триал. Поставил. PVS-Studio->Check Current File.

В окошке где должны быть результаты
License information is incorrect. Please check your registration data or contact Customer Support at support@viva64.com 1

И красным по черному окну Clicks remaining: 18 (can be extended). Это я видимо уже дважды кликнул по надписи о некорректной лицензии.
По опыту использования PVS-Studio в 2009-2010 году могу сказать, что для того, чтобы найти одну реальную ошибку нужно было пролопатить сотни, если не тысячу предупреждений ни о чём. Это же кстати относится и к статическому анализатору VS2013 и Coverity 6. Вам об этом разработчики и пытаются сказать, возможно слишком резким тоном. Вы им: «да ваш год отстой, 80% указателей не проверяются перед использованием», а они вам «да ваш статический анализатор отстой, у вас 80% предупреждений ни о чём». Чтобы зря друг на друга не наезжать и не переливать воду в ступе, разработчикам Miranda NG нужно было бы написать статью «PVS-Studio получает приз «чемпион по ложным срабатываниям»», но вам за статьи деньги платят, а Miranda NG это чистый энтузиазм, поэтому такая статья врядли появится.

Единственный вариант использования статических анализаторов, который я вижу — это подключить их к CI и в обязательном порядке просматривать новые предупреждения. Их будет не очень много и с ними можно будет справиться. Починить же тысячи предупреждений (большинство из которых false positive) в проекте с многолетней историей по-моему не представляется возможным.
Если вы будете наследоваться от класса и использовать его через указатель на базовый класс — то вам нужны в базовом классе виртуальные функции, которые вы будете в наследнике переопределять, и, соответственно, виртуальный деструктор, чтобы можно было корректно удалить объект через указатель на базовый класс.

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

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity