Cppcheck не выводит предупреждения при наличии строки: auto lambda = [](){};

Вот SSCCE для main.cpp:

int main(int argc, char** argv) {
    float a;
    auto lambda = [](){};
    return 0;
}

Запуск cppcheck --enable-all --std=c++11 *.cpp выходов:

Checking main.cpp ...

Удаление auto lambda = [](){}; заставляет cppcheck выводить следующее:

Checkin main.cpp
[main.cpp:3]: (style) Unused variable: a

как и ожидалось. Почему auto lambda = [](){}; заставляет Cppcheck молчать в отношении неиспользуемого сообщения переменной? Это происходит с Cppcheck 1.82.


person Joakim Thorén    schedule 11.03.2018    source источник
comment
Это происходит только тогда, когда вторая переменная имеет тип замыкания?   -  person StoryTeller - Unslander Monica    schedule 11.03.2018
comment
Разве это не вопрос к разработчикам CppCheck? Не уверен, что мы можем сделать об этом здесь.   -  person Lightness Races in Orbit    schedule 11.03.2018
comment
@KillzoneKid: lambda ничему не присваивается.   -  person Lightness Races in Orbit    schedule 11.03.2018
comment
@KillzoneKid: Вы сказали Потому что он не используется, так как он назначен. Однако он не назначен и не не используется.   -  person Lightness Races in Orbit    schedule 11.03.2018
comment
@KillzoneKid: Верно, и ОП спрашивает, почему они не получают предупреждения об этом!   -  person Lightness Races in Orbit    schedule 11.03.2018
comment
Похоже на ошибку или недостаток в cppcheck. Даже с --inconclusive, даже не пикнул.   -  person Eljay    schedule 11.03.2018
comment
Не все инструменты одинаковы. Они склонны к ошибкам и ошибкам. Не принимайте их результаты как должное. Скорее всего, ваш компилятор гораздо лучше справляется с оценкой вашего кода.   -  person Ron    schedule 11.03.2018
comment
Одна проблема, которую я вижу здесь, заключается в том, что в недавнем прошлом проекты свободного программного обеспечения отошли от модели сообщества. Если бы у меня был такой вопрос, лет 5-10 назад, у этого проекта обязательно был бы список рассылки, я бы задал туда вопрос, ожидая, что его получит группа заинтересованных пользователей, у которых, скорее всего, будет что-то полезное, чтобы ответить. Теперь я открываю сайт cppcheck, и что я вижу? Трекер ошибок и IRC-канал. Неудивительно, что люди натыкаются на stackoverflow.com, когда у них есть WTF.   -  person Sam Varshavchik    schedule 11.03.2018
comment
Я предполагаю, что cppcheck на самом деле не понимает лямбда-выражения и вместо того, чтобы давать ложные срабатывания для переменных, которые захвачены и используются внутри лямбда-выражения, предполагает, что все переменные используются таким образом. (Это не объясняет, почему переменная lambda не предупреждается.)   -  person Martin Bonner supports Monica    schedule 11.03.2018
comment
@SamVarshavchik: Похоже, в вашем комментарии есть несоответствие. Сначала вы жалуетесь, что уже некуда снять вопрос, который будет получен группой заинтересованных пользователей, потом сообщаете, что у проекта есть баг-трекер и IRC-канал. Тот факт, что ни один из них не является списком рассылки по электронной почте, не означает, что проект отошел от модели сообщества или что на вопрос о проекте можно ответить только на Stack Overflow. Кроме того, на странице проекта есть ссылка на активный форум, и это было бы подходящим местом для этого поста.   -  person Lightness Races in Orbit    schedule 11.03.2018
comment
@Lightness Races in Orbit: я согласен, что этот вопрос можно задать разработчикам. Особенно если это баг. Я не уверен, является ли это ошибкой или я неправильно использую Cppcheck. Часто stackoverflow быстро указывает на неправильное использование инструментов, поэтому я решил задать свой вопрос здесь. Я также заметил, что здесь часто отвечают разработчики cppcheck.   -  person Joakim Thorén    schedule 11.03.2018
comment
@JoakimThorén Stackoverflow не будет и не может заменить надлежащие каналы для связи с разработчиками.   -  person Passer By    schedule 11.03.2018
comment
@LightnessRacesinOrbit — форум — это не список рассылки. Просматриваю историю некоторых моих списков рассылки: в самые активные периоды они получали ~1200 сообщений в месяц или 40 в день. Я бы не ожидал, что какой-либо проект сообщества форумов приблизится к этому. Последнее сообщение на форуме cppcheck было несколько дней назад. Если кто-нибудь знает о такого рода форумах, получающих такое количество сообщений в день, мне было бы интересно посмотреть, о чем идет речь. Но я сомневаюсь. И есть разница между тем, почему спрашивают здесь, и тем, на что можно ответить только здесь. Я сказал первое, а не второе.   -  person Sam Varshavchik    schedule 11.03.2018
comment
@Passer By: Люди на SO часто задают вопросы о том, почему некоторые программы работают именно так. Я полностью согласен с вами, что SO не должен и не может заменить надлежащие каналы связи с разработчиками. Думаю, на мой вопрос смогут ответить пользователи cppcheck.   -  person Joakim Thorén    schedule 11.03.2018
comment
@SamVarshavchik: я не уверен, что нам также нужен список рассылки. Если бы я думал, что благодаря списку рассылки мы получим больший объем, я бы добавил его.   -  person Daniel Marjamäki    schedule 12.03.2018
comment
@SamVarshavchik: Таким образом, проект с системой отслеживания ошибок, IRC-каналом и активным форумом придерживается модели сообщества только в том случае, если у него также есть список рассылки, получающий ~ 1200 сообщений в месяц. Понятно.   -  person Lightness Races in Orbit    schedule 12.03.2018


Ответы (1)


Здравствуйте, я разработчик Cppcheck.

В чекере есть недостаток. Таким образом, это отсутствующее предупреждение не является преднамеренным.

Я создал этот билет: http://trac.cppcheck.net/ticket/8433

Для информации, это не очень сложная проблема, чтобы исправить.

person Daniel Marjamäki    schedule 11.03.2018