Search
Write a publication
Pull to refresh
0
0
Send message
Просьба добавьте issue tracker (если нет желания париться, то включите на вашем github-е). Иногда хочется отправить вам пример ложного срабатывания, а некуда. Я понимаю что с корпоративными заказчиками у вас связь налажена, но если уж вы дали лицензии opensource разработчикам, то почему бы не получить от них пользу. Пусть люди будут тестировать и предлагать улучшения. А вы уже решите что брать в работу.

А так некуда писать, например у меня есть шумящая строка
class TrackView : public QTreeView
{
virtual void select(const QItemSelection &selection, SelectionFlags command) override;

На нее выводится варнинг:
warn V813 Decreased performance. The 'command' argument should probably be rendered as a constant reference.
Все бы хорошо, но это переопределение метода, так что я не могу менять сигнатуру.

Не знаю, есть ли у вас в анализаторе информация об override, но если есть, то поправить довольно легко, можно просто не выводить такие сообщения для строк с директивой override.
Про таймеры для acl_handler-ов, как я понял проблема в том, что все хэндлеры срабатывали в одно время. Мне пришло в голову другое решение, что-то вроде шардирования. Генерировать сообщение one_second_timer не раз в секунду, а, скажем 10 раз, и передавать соответствующее число от 0 до 9. А хэндлеры при подписке случайно генерят число (1-9) и ставят соответствующий фильтр. В результате хэндлеры запускаются не все разом, а группами.
Кстати об аннотации функций в популярных библиотеках. Довольно сильно шумит диагностика V302 с Qt-шными классами. Qt для индексов использует int (я понимаю, что концептуально это неверно, но уж как есть) соответственно и при вызове используем int.
Например имеем такой код:

QVector<Value> &values();
const Value &operator[](int i) const { return values()[i]; }


Имеем предупреждение «V302 Member operator[] of 'Array' class has a 32-bit type argument. Use memsize-type here.»

Если поменять код на:

QVector<Value> &values();
const Value &operator[](size_t i) const { return values()[i]; }


Тор получаем предупреждение «V120 Member operator[] of object „values()“ is declared with 32-bit type argument, but is called with memsize type argument.»

Насильно приводить типы при каждом вызове Qt-шных методов, не очень приятно. Может можно разметить Qt-шные классы для подавления V302?
А как со скоростью? Это для подчеркиваний и выделений? Может быстрее будет накладывать поверх объекта страницы второй объект с выделениями?
Я пдф, через pdfium в набор QPainterPath складываю, а затем отрисовываю по мере необходимости.

Не совсем понял, отдельные страницы складываете в QPainterPath, или куски одной страницы?
Если страницы целиком, то у меня немного другой подход. У меня минимальный квант, это отдельный PDF-ный объект. Я работаю с PDF на уровне исходного текстового документа. Т.е. перенумеровываю объекты в PDF-е, меняю тип пдфной страницы на пдфный Form и дописываю потом страницу, которая включает в себя эти Form-ы. Мне кажется это быстрее.


Если куски, то это круто! Я до таких высот еще не опускался. Мне вроде как и не надо, но было бы интересно.

а я в надеждах найти что-то, что еще и писать умеет

Возможно мой опыт будет полезен.


Мне для виртуального принтера надо преобразовывать PDF-ы — сливать несколько страниц в одну, масштабировать, поворачивать страницы и.т.д.


Вначале я использовал poppler как для рендеринга, так и для чтения/преобразования PDF-ов. И если с рендерингом все более-менее хорошо, то с обработкой я натерпелся. Poppler имеет 2 API. Один публичный высокоуровневый, но он очень ограничен, по сути только отрисовать страницу и все. И второй низкоуровневый и полузакрытый, на сайте про него не написано, но во всех дистрибутивах есть пакеты с нужными заголовочными файлами. Вот этот API позволяет преобразовывать PDF-ы на уровне объектов. Публичного API мне не хватало, и я решил использовать низкоуровневый, ох и натерпелся я. Этот API очень запутанный и недокументированный. А главное он нестабильный, и может внезапно поменяться в минорной версии библиотеки. Добило меня когда KDE-шники взяли и добавили аргументы в функцию вообще без изменения версии. А т.к. проект опенсорсный, то мне надо поддерживать совместимость с несколькими версиями библиотек (от винтажной в Debian Stable, до модной в ArchLinux)


Тогда я плюнул, и написал свой велосипед, который позволяет читать менять и сохранять PDF-ы. Рендерю пока через poppler. Смотрел в сторону PDFium — выглядит обещающе, но ее нет в стандартный пакетах, а для вас, для закрытого проекта можно и собрать самому.

Это не претензия, а предложение. А можно тогда попросить увеличить это значение до, скажем, 30 или 50
Часто начало фала выглядит примерно так


/* BEGIN_COMMON_COPYRIGHT_HEADER
 * (c)LGPL2+
 *
 *
 * Copyright: 2012-2013 Boomaga team https://github.com/Boomaga
 * Authors:
 *   Alexander Sokoloff <sokoloff.a@gmail.com>
 *
 * This program or library is free software; you can redistribute it
 * and/or modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * You should have received a copy of the GNU Lesser General
 * Public License along with this library; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301 USA
 *
 * END_COMMON_COPYRIGHT_HEADER */

Т.е. лицензия больше 8 строк.

Я понимаю, что для получения лицензии из этой статьи добавлять заголовки не надо. И даже отправил запрос.
Но, пожалуйста, рассмотрите еще вариант небольшого ослабления требований к PVS-ным комментариям. Пусть их можно будет располагать не обязательно в первых 2-х строках файла, а после прочих комментариев. В опенсорсе есть устоявшиеся правила, уж так завещал бородатый. В начале файла расположено краткое описание и лицензия, а потом уже идет все остальное. Я готов добавить Ваш комментарий в свои проекты, но после лицензии.
Уж если Вы раздаете лицензии на доверии, то такое ослабление на должно вызвать притока халявщиков.

Я не пытаюсь найти способ вас обжулить. Тут вопрос не про обход защиты, а про применимость информации и патчей. С моим персональным проектом все понятно. А с общественными — серая зона. Вот имею я от вас лицензию на убийство багов, проверил я, скажем, LXQt. Вот что я имею право делать с этими знаниями? Могу я коммитить патчи? А писать в комментарии, что это исправление ошибки найденной вашей программой. А переслать сообщение из PVS автору кода в котором найдена ошибка?

Т.е. я получив лицензию смогу проверять любые свои проекты с гитхаба? А как узнать, что это мой проект? А проект в который я коммитил 10 лет назад? А Clang, Chromium и KDE я не могу, а если я туда коммитил? Вопросов возникает больше чем ответов.
Возможно, что привязаться к проекту будет проще:


  1. Берем из git/config url
  2. Добавляем дату окончания, подписываем это все вашим приватным ключом. Как результат имеем лицензию на этот проект до определенной даты.
  3. Пользователь пушит файл лицензии в корень проекта.
  4. Любой человек может проверять этот, и только этот проект.
А лицензия получается на пользователя+проект или на проект?
Т.е. если я запросил лицензию на свой проект, могу другие контрибьютеры пользоваться? Для проектов над которыми работает десяток человек, хотелось бы иметь одну лицензию для всех. И класть ее в git. Я не говорю про KDE, а про проекты среднего размера.
А можно в мобильной версии выводить коментарии не на отдельной странице, а под статьей? У меня частый кейс такой — перед метро открываю несколько статей, чтоб все их почитать. Но приходится заходить на каждую страницу, прокручивать вниз, и открывать ссылку c комментариями на отдельной странице. Я не думаю, что в современном мире комментарии добавят много трафика и времени к статье.
А мне жалко, что родное колесо настройки выкинули.
для работы библиотеки go-sqlite3 нужен CGO, а при выполнение команды go build с флагом CGO_ENABLED=1 появляются ошибки


Может Вам заменить SQLite на чисто гошное, например на boltDB.

Information

Rating
Does not participate
Registered
Activity