PVS-Studio corporate blog
Open source
C++
C
Comments 82
+1
Работы по иправлению ошибок ведутся в задаче Bug 120703. Все выходные Mike Kaganski вносил правки. Видимо. хотят успеть к выпуску LibreOffiece 6.2.
+1
Ещё не все пишут pvs-studio целиком. По pvs там 4 страницы с коммитами найдётся. Неплохо для выходных.
+7
То чувство, когда PVS-Studio пишет о найденном баге, а ты его уже исправил. Правда, случайно.
0
Ну три десятка багов так не исправишь, конечно. И вообще это не самая надёжная методика контроля качества проекта :D
+4

Очень знакомый стиль кода. Я думаю, в либру ушел разработчик с нашего проекта. :). Язык сменил, а идеи остались. К сожалению, статический анализатор тут бессилен, прогер опять точно такие ошибки ещё раз сделает. Поможет только обучение, что б автор кода пересмотрел свой взгляд.

+1
Напротив, именно против таких прогеров и помогает статический анализатор. Только его надо запускать не от случая к случаю, а регулярно.
+2
Кстати да. Я с тех пор, как начал регулярно запускать cppcheck, стал намного качественнее писать код. Когда статический анализатор из раза в раз ругается на одно и то же, даже до обезьянки рано или поздно дойдёт.
+3
— Как преуспеть в использовании статического анализа кода?
— Просто используйте его регулярно!

Это то, что мы всем и всегда говорим.
+1
Исправление ошибок это всегда здорово. Но проблема либры в первую очередь не в багах, а в невероятной тормознутости. Впрочем проблемой в наш золотой век это не считается, так что исправлять вряд ли кто будет…
+1
Тормознутость в каких операциях и на каком железе? «У меня всё работает» (с), ну или точнее — на моих компьютерах что Libre, что свежий MS Office работают с примерно идентичной хорошей скоростью.
0
i7 пятилетней давности, 16 Gb, SSD. В первую очередь лаги интерфейса. Можно смириться с притормаживанием при пролистывании большого документа с картинками. Но что окно свойств (ну там character/paragraph во Writer, или линии в Draw) открывается по полторы-две секунды — хочется рвать и метать. Может там какие несовместимости джав-дотнетов иль еще чего — не знаю. Но OO на той же машине выглядит сильно лучше.
0

Спасибо за информацию! Мои машинки такие же или слабее (вплоть до самых бюджетных AMD) и документы при листании не лагают, но они и сильно проще — максимум 50 страниц, обычно без картинок, но с таблицами. Лагов интерфейса не замечал, понаблюдаю на досуге. А вот баги попадались — раз в несколько версий например отламывают счётчик слов и символов (считает только при открытии документа, но не в процессе редактирования).

0
Да много их, автозамена текста, особенно с регулярками, на 500к ячеек запросто может заставить совершить хардрезет над либрой. У майков это проявляется меньше, особенно в новейших версиях офиса
0
Я замечал, что опенофис немного тормознутее майкрософтовского собрата, но меня это не особо беспокоит. Я использую его в первую очередь как просмотрщик ворд/эксель документов, иногда делаю простые таблицы. Прекрасная программа.

Ну а если хочется исправить тормоза, это же опен сорс — патчез ар велком.
+1
> Ну а если хочется исправить тормоза, это же опен сорс — патчез ар велком.

Ну ведь лицемерное вранье это. Вроде как да, но по факту мильоны домохозяек (и домохозяинов к коим и себя я отношу) вынуждены употреблять что дают. И ладно бы речь шла об утилите на 1000 строк, которую пилит энтузиаст в обеденный перерыв. Так нет, так себя ведут огромные конторы (не знаю уж какая там модель конкретно у LO, но та же мозилла к примеру), содержащие штат программистов и загребающих деньги на рекламе, поддержке, корпоративных контрактам. А простому смертному пользователю — «у нас опенсорс, ас из, и вообще не бухти и помогай».
0
Где «лицемерное вранье»? Я лично им пользуюсь не первый год и меня устраивает. Всякие документы с госсайтов отображает нормально. Не надо платить и не надо мучаться с закрытым софтом. Не надо сливать свои данные Гуглу. Не надо принимать сомнительные условия использования от коммерческих компаний. Без всяких условий и обязательств — бери и пользуйся, по моему так выгодная сделка.

Справедливости ради, я не круглые сутки работаю с документами, а лишь иногда.

Могу впрочем вспомнить баг, когда он не мог показать какую-то презентацию, но эта презентация была создана в другом продукте (в МС офисе) и конечно, тут возможны проблемы — это для любых продуктов справедливо. Точно так же проблемы совместимости есть у разных версий МС офиса и у других коммерческих продуктов.

> Вроде как да, но по факту мильоны домохозяек (и домохозяинов к коим и себя я отношу) вынуждены употреблять что дают

Что значит вынуждены? С вас взяли обязательство не пользоваться коммерческими продуктами? Вы всегда можете пойти и купить любой другой продукт.
+2
>Что значит вынуждены? С вас взяли обязательство не пользоваться коммерческими продуктами? Вы всегда можете пойти и купить любой другой продукт.

Вот об этом и речь — вечное «в мире свободного софта вам никто и ничего не обязан!». А потом (делают вид, что) удивляются, почему популярно мнение, что свободный софт — не для людей.
0
Они odt конвертят в екселевский формат, т.е. интерпретатор у них один.
И когда я его потестил на калковской таблице с годик назад всё было печально.
При этом ООо точно работало по разному если файл был в формате эксель 97, например (на либре не сравнивал) — тогда количество столбцов обрезалось, например. И формулы работали по другому.
Поэтому, без нормального анализа как работало то или иное в соответствующих версиях ПО — нормально отобразить любой файл не получится вообще. ООо, кстати, тоже от версии к версии менял поведение…
0
Вроде когда то ставил себе, но смысла не увидел. Для себя меня OO устраивает, а LO — корпоративный стандарт от которого так просто не избавишься.
0
если разработчики LibreOffice обратят внимание на статические анализаторы кода и попробуют использовать их для повышения качества и надёжности проекта

Как минимум используются Coverity и Cppcheck.
+9
Просто мало использовать анализатор, нужно ещё использовать результаты анализа! :)
+4
К сожалению, мы сталкиваемся с этим. Есть разработчики, считающие, что наличие Coverity Scan помогает, как иконка в автомобиле.
+4
LO это худшее что случалось в моей жизни. Постоянные подвисания, падения, непонятные баги интерфейса… ладно-бы у меня одного, дык это по всей моей конторе и у родителей. Теперь я хотя-б вижу что это не у меня руки кудрявые. Спасибо вам за проверку.
+1
ООо был наааамного хуже (вспоминая падения от того, что операции накапливались в памяти и при работе с большими таблицами в какле, её вдруг переставало хватать в 32битных версиях)
0
В Хроме не особо часто, его обычно спасало разбиение на кучу независимых процессов, которую он практикует с древних времен. А чтобы один процесс хрома разжирел/протек до лимита в 2 ГБ это редкое исключение.

А вот 32 битный FireFox до недавнего времени(до перехода на мультипроцессность и замены движка) просто обожал долбиться головой в стену истекая кровью страдал от утечек памяти и спотыкания о лимиты 32 битной адресации.
+2
Пользовался OO начиная со второй версии, и заканчивая активно пользоватся версией LO 4 с хвостиком, далее перешел на латех. Опеноффис и либраоффис это лучшее, что мне встречалось для работы с текстами, не считая латеха. Самое главное отличие от МСО в логичности работы со стилями, а кроме них по сути вообще ничего не нужно.
Эпизодически работал с 5й веткой, по моему мнению количество ошибок и глюков возросло. Сейчас вроде бы стало лучше, но я с ним теперь активно не работаю.
+1
alexkuzko (промазал кнопкой) На предприятии большая часть компьютеров (~30 из 50) под windows XP-10, однако проблемы есть и на убунте/лубунте/элементари/опенсусе, причем и под KDE, и под gnome, и под другими веществами. Работаем сугубо под родным форматом LO, документы созданные в нем, ничего из ворда не копируется.

Последний косяк заставивший лично меня снести ЛО — создаем таблицу 20 строк 4 колонки, жмем Ctrl+A и с зажатой клавишей Ctrl щелкаем на заголовок колонки B — в 100% случаев либра лично у меня закрывалась с ошибкой и пыталась восстановить документ. Я сдался и поставил 2010 ворд в wine. Задолбали приколы на ровном месте с софтом из дефолтного репозитория.
0
Подождите, что значит «таблицу 20 строк 4 колонки»? или речь про Writer?
Впрочем, там баг тоже не повторился.
Fedora 28.
LO 1:6.0.6.2-1.fc28
+3
вам и sawser отвечу одним сообщением т.к. не могу быть столь оперативным из-за кармы: Баг был в calc, файл с заполненными 20 строками в 4 колонки.

Баг повторить на соседних компьютерах не мог, по этому уточнил "… либра лично у меня закрывалась...". Убунта 18.04, либра последняя из официальных реп, баг сентябрьский.

Копать и искать в чем первопричина — простите, не мое, я простой пользователь.
0
Я сдался и поставил 2010 ворд в wine

А можно с этого момента поподробнее? Когда я это пробовал, ворд из под вайна жутко глючил в куче мест.
+4
LO запорол мне файл с методичкой, которую я писал для универа. Запорол так, что теперь во всем майкрософтовском софте она приводит к зависанию через минуту-две. Понятия не имею что там произошло, не помогает даже пересохранение в doc и обратно в docx.
Теперь если при мне кто-то заведет старую песню про то, как в линуксе все хорошо с офисом и какая там замечательная совместимость — буду сразу бить табуреткой по голове.

Слава богу теперь есть альтернатива — облачный офис от майкрософта, можно забыть об этом глючно-кривом поделии как о страшном сне (ну и использовать его только для редактирования неважных документов)

Сейчас сюда набегут линуксоиды с минусами наперевес и криками «у меня все работает», но что это изменит?
-1
docx вполне себе человекочитабельный формат. Если есть большое желание, откройте файл и попробуйте разобраться, что там не так. По моему опыту, что либре-офис, что мс-офис при многочисленных правках и изменениях формата могут генерировать адские вложенные конструкции для простейших вещей.
+7
Вот типично линуксовый подход. Мне как-то совершенно неинтересно, что именно там может быть не так с файлом и я не собираюсь в нем лазать. Мне нужно офисное приложение, которое нормально работает и не портит мне файлы.

Скорее даже с самим файлом там все так — он ведь открывается и отображается, просто потом мс офис почему-то зависает. Вряд ли я на глаз определю проблему.
На самом деле мы методом проб и ошибок (работая через облачной офис, в котором оно не зависало) выяснили что как-то связано с оглавлением. Если его удалить то все работает. А вот если вставить обратно — зависает. Причем даже если удалить и вставить в мс офисе, а не в ло, так что дело даже наверное не в самом оглавлении, а в чем-то еще, с ним связанном.
+4

MS Office не спасет вас от подобных проблем, ибо он точно такое же тормоглюкало, норовящее свалиться в самый неожиданный момент (иногда просто выбешивают падения каждые несколько минут), имеющее серьезные проблемы с обратной совместимостью (постоянно ловлю разного рода проблемы с документами, даже сравнительно простыми, созданными всего лишь в другой версии офиса) и некорректно работающее с "не своими" форматами (ODF в MS Office — те же проблемы, что и с OpenXML в LibreOffice).

+3
Так уж получилось (покупали в разное время), у нас в офисе зоопарк из MS Office: есть 2003 с пакетом совместимости, 2010, 2013, 2016. Так вот, довольно часто бывает ситуация, когда тот или иной офис не открывает или открывает не совсем правильно документы, сделанные в другой версии. При этом с LO никаких проблем, даже иногда приходится в нем пересохранять файлы, например, от 2010 офиса, чтобы они корректно открылись в 2016.
+1
МО портит файлы не хуже, уж поверьте, но все равно предпочтительнее либре офиса если есть деньги и работа в вин-среде
+1
Мне нужно офисное приложение, которое нормально работает и не портит мне файлы.
Сюдя по описанию такое приложение у вас есть. Называется LibreOffice.

Ибо если MS Office падает (независимо от того, что вы в него засовываете) — то это проблема только и исключительно MS Office. Не должен редактор падать — независимо от того, какую чушь вы в него пихаете. Почему-то когда браузер от хитрого HTML падает — его чинят, а к MS Office почему другой подход?

Если же сам LibreOffice ваши документы открывает и не падает — тогда уж точно с ним всё в порядке. Глупо обвинять его в том, что у разработчиков другой программы ручи не из того места растут.
0
Альтернатива — WPS Offce. Только им спасаюсь на Линуксе. С Libre/Open реально не понимал, когда мне доказывали, что они ничуть не хуже MS. Тормозят жестко, при этом поддержка форматов далека от совершенства и вообще.
0
WPS Offce — тоже так себе альтернатива. Кривой спеллчекер (начиная с того, что название словаря русского языка — «Русская Федера» — я не шучу), реально дурацкие шрифты (распечатанный документ реально стыдно показывать), не работающие ctrl-команды в русской раскладке.
Какие есть ещё варианты?
0

LO при первом сохранении в неродном формате спрашивает у пользователя, уверен ли он в своем решении и понимает, что ценная информация может быть потеряна и т.п.

+2
Зависает майкрософтовская программа, а виноват опенофис?
+5
Я вот так и не понял причем здесь бухгалтер. Если хотели сказать, что либреофис лютое говно, то так бы и написали. Скажу вам по секрету, как бухгалтер программисту, бухгалтерам насрать на либреофис, для них страшный сон это 1С 8.3
0

Ну почему же, сама по себе платформа вполне ничего себе — модно, стильно, но вот какие там конфигурации накорчевывают сверху — это да.

0
Может сам пакет офиса содержит много ошибок, но с помощью Либры вылечил «распухшие» файлы MS Excel, которые стали весить 10-12 Мбайт вместо положенных 20-30 килобайт.
0
Скорее всего, в вашем файле экселя кто-то задал форматирование для столбца в явном виде, как результат, эксель сохранил все 1М строк на листе, пусть там и пустота. Лечится в офисе нахождением последней значащей строки, выделением пустых строк до пола и удалением строк.
0
Вы имеете ввиду ситуации, когда пустые ячейки содержат какую-то информацию? Ну так это правится за 15 секунд. Нагуглить решение проблемы можно быстрее, чем скачать LO и установить его.
0
Хм. У меня бывает просто при открытии документа в LibreOffice Calc все пустые ячейки иногда превращаются в выпадающие списки. Приходится тратить больше 15 секунд, чтобы поудалять это всё.
+1
Описанное Вами, несколько иная проблема. В Excel действительно есть проблема, когда вместо сохранения информации о группе ячеек, она сохраняется для каждой и таким образом таблица из 5 строк и 3 столбцов занимает до 10-20мб. Скорость работы такого файла соответствующая. Правится выделением свободного диапазона сочетанием клавиш и очисткой форматирования или элементарным макросом.
А в LibreOffice помимо выпадающих списков много других багов. Я несколько раз пытался хотя бы сам пересесть на него. Очень тяжко…
0
И чё вам не нравится Libre Office?
Я вон никак не мог скопировать название заголовка для сохранения текстового файла на «Рабочий стол» (в Windows 10).
Если копировать из заголовка, что в браузере, файл сохраняется.
Если копировать прямо из Libre Office, вылезает запрос на NET. Framework.
Установил все эти NET. Framework -и.
Один фиг при копировании из заголовка в текстовом редакторе Libre Office, при следующем копировании чего либо в текстовый редактор (Libre Office) пакет намертво зависает, выкинув требование NET. Framework-ов.
Тады я купил новый ноут, подозревая что железо глючит.
Но куда там!
Зато я теперь продвинутый пользователь: я знаю, что в Libre Office с версии 5.0 и до версии 6.1.2, (х32, х64), копировать что либо можно только из браузера.
0
У LibreOffice вообще есть ошибки потрясающие — до версии 5.0.4 макрос честно вставлял новые строки и столбцы, более новые версии стали работать с точностью до наоборот (!) вместо строк вставляют столбцы, вместо столбцов строки! Вот как можно так писать… И самое интересное — в OpenOffice — эти самые макросы отрабатывают абсолютно нормально. Ну и о самих разработчиках — на обращения в форумах о такой «странной» ошибке — никакой реакции…
-2
Самой большой оштбкой дизайна С++ и Питон считаю возможность перегрузки операторов. Просто глядя на строку x = x * 0 невозможно сказать, делает она что-то или нет. Надо лезть в класс, смотреть его предков, причём даже это ни в C++ ни в Питоне не может дать однозначную уверенность, что оператор не перегружен. Потому что в С++ используют препроцессоры, а в Питоне можно поменять метод класса у объекта после его создания. Да и метод класса подменить на ходу тоже можно.
UFO landed and left these words here
0
Виновато то, что ни linter, ни профайлер не могут написать «У вас говнокод, анализировать не буду» и всё ещё считаться хорошей утилитой.
Именно поэтому для Java у нас есть программы, которые сами рефакторинг всего проекта за вас сделать могут, а на С++ анализатор, увидев конструкцию типа
a = 3;
a = 3;
a = 3;

может только вяло проблеять, что наверное, может быть здесь лишняя операция. Сам я пишу на Питоне и имею набор правил, как писать так, чтобы хоть автокомплит в PyCharm работал. Внешние библиотеки моим правилам не следуют и у половины автокомплит показывает не всё, что нужно.
+1

На джаве будет так:


a.assingInt(3);
a.assignInt(3);
a.assignInt(3);

Чем это лучше для человека или refactor tool?

0
Согласен, но все познается в сравнении. Это вы на ruby наверное не писали, там вообще понять, что делает код невозможно. А еще например явный `return x` в коде считается плохим стилем и генерирует предупреждения style check.
+3
Про цикл с одной итерацией. Обратите внимание на оформление заголовка и на тело цикла. Вы увидите что синтаксис написан так, чтобы оптимизатор кода использовал xlat ассемблерные операции для работы с табличными списками в памяти, структура скорее всего выровнена до 64х байт, или кратна этому размеру, чтобы помещаться в границы сегмента кэша данных процессора. Банальная оптимизация. Код пишет большое количество разработчиков, и я рад что некоторые из них читали книги по оптимизации ПО от Intel-press.
+1
Ох, ЛО, как же я с ним мучился последние два дня, нужно было поработать с документами на новом ноуте, лицензионного офиса небыло, поставил ЛО, открываю документик размером 12 мб, собранный в 2003 офисе, ЛО виснит и умирает, кусок из того документа весом 200 кб легко, пришлось поставить офис в триаильном режиме, пересохранить в odt и только тогда с подвисаниями смог открыть.
+1
Кстати китайский WPS линуксе такой же по скорости как и нативный офис. Но только он все фишки поддерживает, вроде встроенных документов.
0
Я иногда использую ОнлиОфис — вполне зрелая штука.
В ЛО — только для изучения структуры документа. Он таки намного больше всяких косяков отображает закопаных в структуре документа чем тот же МСО
UFO landed and left these words here
0
У меня наоборот. 90 % времени в убунте с либрой, еще 5 — гуглдрайв, но оставшиеся 5% вполне оправдывают легальную лицензию на МО и развернутую виртуалку с вин10 — и даже так МО после либры чувствуется как ц класс после логана
0
Глюкавость либры — это еще полбеды, она проявляется только в достаточно сложных документах. А вот его интерфейс родом прямиком из 90х на фоне удобнейшего МО — вот это просто жесть.
-1
Тем не менее, анализатор нашёл очень много проблем, не связанных с этим, и я буду рад, если разработчики LibreOffice обратят внимание на статические анализаторы кода и попробуют использовать их для повышения качества и надёжности проекта.
А вы им PVS-Studio предлагали? Бесплатно, разумеется, т.к. "Это будет полезно всем"? Или вы хотите что бы разработчики бесплатного проекта с открытым исходным кодом покупали инструменты для разработки?
0

Самые фундаментальные ошибки либры:


  1. Захардкоженная запятая
  2. Отсутствие "асинхронности" в ui в 2018 году, а также диаграммы из 2002
  3. Желалание быть похожим, подражание — свой визуалбейсик со своими премудростями вместо какого нибудь питона или js в качестве макроязыка
UFO landed and left these words here
0

Пользуясь случаем, хочу спросить у разработчиков анализатора. Почему в последней сборке PVS под Linux пропали исходники к plog-converter из архива *.tgz?

+1
Исходники plog-converter переехали на Github. Для тех, кто не знает, что такое plog-converter, есть описание утилиты. Она позволяет конвертировать отчеты анализатора в различные форматы.
Only those users with full accounts are able to leave comments., please.