Pull to refresh

Comments 17

Я правильно посчитал что это на ~20 человек? Я на сайте насчитал вроде 14. То есть хантить будете? :)
CSharp (Хабр не умеет заголовок 2-ого уровня с решёткой в режиме Markdown :)

Можно так:


## C♯

text

Или так:


C#
---

text
Для каких IDE не хватает плагина?

Свой вариант: QtCreator. Он, правда, славен отсутствием стабильного API для плагинов. Например, сторонний плагин для Meson патчился для работы с версии 4.5 по 4.10 и не работал (не компилировался), начиная с 4.11. А через полгода поддержку встроили в IDE.

Для каких IDE не хватает плагина?

Свой вариант: Segger Embedded Studio. В крайнем случае любая другая для embedded.
Вроде немцы позволяют подключать плагины внешние. Среда-то не плохая в целом, а вот нормального анализатора не имеет.
Записали. Про отсутствие анализатора понимаю. У многих вендоров собственные типы проектных файлов, что ничего хорошего не подключишь. Тем не менее, мы обошли эту проблему. Хотите попробовать PVS-Studio одним из этих способов? Ещё зависит от компилятора и платформы. Если ARM-компилятор, то шансы запустить нас велики.
Попробую на досуге.
SES использует либо GCC компилятор, либо свой собственный. При этом, GCC который они интегрировали к себе, Ваш анализатор не видит. Я уже писал как-то Вам по этому поводу.
Emacs (как и Vim) поддерживает открытие лога анализатора. Попробуйте такие команды:

plog-converter -a GA:1,2 -t errorfile
  -o /path/to/project.err /path/to/project.log

emacs
M-x compile
cat /path/to/project.err 2>&1
Для каких IDE не хватает плагина?

KDevelop. Понимаю, что не самая популярная среда разработки, но иметь плагин было бы очень удобно. Пожалуй, только отсутствие плагина меня и сдерживает от использования PVS-Studio как части workflow.

Очень круто, большое спасибо за развернутый ответ на мой комментарий к другой статье!


Из описанного:


Ручная аннотация функций в популярных библиотеках для увеличения количества обнаруживаемых дефектов

Можно к этому добавить пример, что имеется в виду? И к каким библиотекам, если не секрет? Как эти аннотации будут согласовываться с будущими изменениями в самих библитеках, если таковые произойдут?

Про аннотирование функций я рассказываю, например, здесь: Опыт разработки статического анализатора кода (23:40). Там и про примеры библиотек есть.

По поводу изменения в библиотека — пока никак ничего не делается. Да и проблемы, собственно, нет. Функции, которые мы аннотируем, вряд ли кто-то будет менять. Никто не меняет интерфейс таких функции, как memcpy, malloc или std::swap. Если же мы про что-то экзотичное, то да, может что-то поменяться. В этом случае из-за изменения количества или типов аргументов, функция перестанет распознаваться как размеченная. И что-то может перестать ловиться. Но это столь маловероятное… Плюс если кто-то или мы сами заметим — то исправим.

Кстати, да. В мобильной разработке многие с Джавы уходят на Котлин.

Кстати об аннотации функций в популярных библиотеках. Довольно сильно шумит диагностика 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?

Очень жду для javascript анализатор в виде плагина для JetBrains обезательно куплю если появиться.

Sign up to leave a comment.