Comments 17
CSharp (Хабр не умеет заголовок 2-ого уровня с решёткой в режиме Markdown :)
Можно так:
## C♯
text
Или так:
C#
---
text
Для каких IDE не хватает плагина?
Свой вариант: QtCreator. Он, правда, славен отсутствием стабильного API для плагинов. Например, сторонний плагин для Meson патчился для работы с версии 4.5 по 4.10 и не работал (не компилировался), начиная с 4.11. А через полгода поддержку встроили в IDE.
Для каких IDE не хватает плагина?
Свой вариант: Segger Embedded Studio. В крайнем случае любая другая для embedded.
Вроде немцы позволяют подключать плагины внешние. Среда-то не плохая в целом, а вот нормального анализатора не имеет.
Для каких IDE не хватает плагина?
Emacs
Для каких IDE не хватает плагина?
KDevelop. Понимаю, что не самая популярная среда разработки, но иметь плагин было бы очень удобно. Пожалуй, только отсутствие плагина меня и сдерживает от использования PVS-Studio как части workflow.
Очень круто, большое спасибо за развернутый ответ на мой комментарий к другой статье!
Из описанного:
Ручная аннотация функций в популярных библиотеках для увеличения количества обнаруживаемых дефектов
Можно к этому добавить пример, что имеется в виду? И к каким библиотекам, если не секрет? Как эти аннотации будут согласовываться с будущими изменениями в самих библитеках, если таковые произойдут?
По поводу изменения в библиотека — пока никак ничего не делается. Да и проблемы, собственно, нет. Функции, которые мы аннотируем, вряд ли кто-то будет менять. Никто не меняет интерфейс таких функции, как memcpy, malloc или std::swap. Если же мы про что-то экзотичное, то да, может что-то поменяться. В этом случае из-за изменения количества или типов аргументов, функция перестанет распознаваться как размеченная. И что-то может перестать ловиться. Но это столь маловероятное… Плюс если кто-то или мы сами заметим — то исправим.
Каким языкам научить PVS-Studio?
Kotlin
Например имеем такой код:
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 обезательно куплю если появиться.
Дорожная карта PVS-Studio на 2021 год