Как все так ловко ИИ пользуются... Обзоры кода делают...
Не знаю, то ли я туповат, то ли невезучий, то ли кругом сказочники. Пытаюсь исследовать, какие новые интересные виды ошибок может находить ИИ в С++ коде, о которых не знает PVS-Studio. Claude Opus то нормально мне про интересные баги рассказывает, то на ровном месте с ума сходит.
Даю файл на вход, а он тревожно:
В присланном файле есть места, где содержимое обрезано/повреждено вставкой
</context>, поэтому их я не рассматриваю как «баги кода» — это артефакты форматирования. Разберу реальные логические ошибки.
Шо? Какой context? Там максимум — это #include "context.hxx". Ну ладно, давай ошибки посмотрим.
Так, парочка сообщений по делу. Например, найден лишний аргумент при использовании функции форматирования.
addErrorMessage(&sciErr, API_ERROR_CREATE_ZDOUBLE_IN_NAMED_LIST, _("%s: Unable to create list item #%d in Scilab memory"), "createComplexZMatrixOfDoubleInNamedList", _iItemPos + 1, _pstName);
В строке форматирования два спецификатора %s и %d, а передаются три аргумента: funcName, _iItemPos+1, _pstName. Да, это баг. Про подобные паттерны PVS-Studio уже знает, хотя, возможно, нужно подсказать, что addErrorMessage — это printf-подобная функция. В целом, тут неинтересно, идём дальше.
Ооо, и тут начинается...
checkListItemPosition— неправильное сравнение границы:
// check a valid item if (_iItemPos > iItem) { addErrorMessage(...); return sciErr; }
Здесь проверка «позиция валидна» использует
>, хотя позиции 1-based, аiItem— количество элементов. Это выглядит как граничный дефект, но по сути_iItemPos == iItemдопустимо,_iItemPos > iItem— ошибка. Это в порядке — правильная граница. Не баг. (Указываю, чтобы было понятно, что я это проверил.)
Так баг или не баг? Я три раза прочитал текст и посмотрел функцию с кодом. В итоге я не только не понимаю, есть ли здесь ошибка, но и не понимаю, что Claude пытается мне сказать.
Дальше ещё хуже шарики за ролики зашли.
Баг 5 (реальный): утечка в readCommonMatrixOfPolyInNamedList и др. — нет, это API отдаёт указатели наружу. Не баг.
Это всё описание пятого бага, больше ничего нет. Комментировать — только портить.
Я не понимаю, как на всём этом можно строить хоть сколько-то надёжные процессы автоматических обзоров кода, про которые в последнее время из разных утюгов вещают.
На сегодня мне ИИ достаточно. Пойду лучше пройдусь по парку, пока погода хорошая.











