Просьба добавьте 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.
Например имеем такой код:
Тор получаем предупреждение «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 */
Я понимаю, что для получения лицензии из этой статьи добавлять заголовки не надо. И даже отправил запрос.
Но, пожалуйста, рассмотрите еще вариант небольшого ослабления требований к PVS-ным комментариям. Пусть их можно будет располагать не обязательно в первых 2-х строках файла, а после прочих комментариев. В опенсорсе есть устоявшиеся правила, уж так завещал бородатый. В начале файла расположено краткое описание и лицензия, а потом уже идет все остальное. Я готов добавить Ваш комментарий в свои проекты, но после лицензии.
Уж если Вы раздаете лицензии на доверии, то такое ослабление на должно вызвать притока халявщиков.
Я не пытаюсь найти способ вас обжулить. Тут вопрос не про обход защиты, а про применимость информации и патчей. С моим персональным проектом все понятно. А с общественными — серая зона. Вот имею я от вас лицензию на убийство багов, проверил я, скажем, LXQt. Вот что я имею право делать с этими знаниями? Могу я коммитить патчи? А писать в комментарии, что это исправление ошибки найденной вашей программой. А переслать сообщение из PVS автору кода в котором найдена ошибка?
Т.е. я получив лицензию смогу проверять любые свои проекты с гитхаба? А как узнать, что это мой проект? А проект в который я коммитил 10 лет назад? А Clang, Chromium и KDE я не могу, а если я туда коммитил? Вопросов возникает больше чем ответов.
Возможно, что привязаться к проекту будет проще:
Берем из git/config url
Добавляем дату окончания, подписываем это все вашим приватным ключом. Как результат имеем лицензию на этот проект до определенной даты.
Пользователь пушит файл лицензии в корень проекта.
Любой человек может проверять этот, и только этот проект.
А лицензия получается на пользователя+проект или на проект?
Т.е. если я запросил лицензию на свой проект, могу другие контрибьютеры пользоваться? Для проектов над которыми работает десяток человек, хотелось бы иметь одну лицензию для всех. И класть ее в git. Я не говорю про KDE, а про проекты среднего размера.
А можно в мобильной версии выводить коментарии не на отдельной странице, а под статьей? У меня частый кейс такой — перед метро открываю несколько статей, чтоб все их почитать. Но приходится заходить на каждую страницу, прокручивать вниз, и открывать ссылку c комментариями на отдельной странице. Я не думаю, что в современном мире комментарии добавят много трафика и времени к статье.
А так некуда писать, например у меня есть шумящая строка
На нее выводится варнинг:
warn V813 Decreased performance. The 'command' argument should probably be rendered as a constant reference.
Все бы хорошо, но это переопределение метода, так что я не могу менять сигнатуру.
Не знаю, есть ли у вас в анализаторе информация об override, но если есть, то поправить довольно легко, можно просто не выводить такие сообщения для строк с директивой override.
Например имеем такой код:
Имеем предупреждение «V302 Member operator[] of 'Array' class has a 32-bit type argument. Use memsize-type here.»
Если поменять код на:
Тор получаем предупреждение «V120 Member operator[] of object „values()“ is declared with 32-bit type argument, but is called with memsize type argument.»
Насильно приводить типы при каждом вызове Qt-шных методов, не очень приятно. Может можно разметить Qt-шные классы для подавления V302?
Не совсем понял, отдельные страницы складываете в 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
Часто начало фала выглядит примерно так
Т.е. лицензия больше 8 строк.
Я понимаю, что для получения лицензии из этой статьи добавлять заголовки не надо. И даже отправил запрос.
Но, пожалуйста, рассмотрите еще вариант небольшого ослабления требований к PVS-ным комментариям. Пусть их можно будет располагать не обязательно в первых 2-х строках файла, а после прочих комментариев. В опенсорсе есть устоявшиеся правила, уж так завещал бородатый. В начале файла расположено краткое описание и лицензия, а потом уже идет все остальное. Я готов добавить Ваш комментарий в свои проекты, но после лицензии.
Уж если Вы раздаете лицензии на доверии, то такое ослабление на должно вызвать притока халявщиков.
Т.е. я получив лицензию смогу проверять любые свои проекты с гитхаба? А как узнать, что это мой проект? А проект в который я коммитил 10 лет назад? А Clang, Chromium и KDE я не могу, а если я туда коммитил? Вопросов возникает больше чем ответов.
Возможно, что привязаться к проекту будет проще:
del
Т.е. если я запросил лицензию на свой проект, могу другие контрибьютеры пользоваться? Для проектов над которыми работает десяток человек, хотелось бы иметь одну лицензию для всех. И класть ее в git. Я не говорю про KDE, а про проекты среднего размера.
Может Вам заменить SQLite на чисто гошное, например на boltDB.