Как заставить VC++ выдавать предупреждение MEMBER_UNINIT?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 02.07.21 12:08
Оценка:
У VC++ есть предупреждение C26495 (MEMBER_UNINIT) (члены класса не инициализированы в конструкторе). Компилирую версией 19.28 (из VS, обновленной пару месяцев назад) тестовый файл, в котором конструктор не инициализирует ни одного из членов — ни ошибок, ни предупреждений нет. Как заставить это предупреждение работать?
warning c26495 vc++
Re: Как заставить VC++ выдавать предупреждение MEMBER_UNINIT?
От: Carc Россия http://www.amlpages.com/home.php
Дата: 02.07.21 12:12
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>У VC++ есть предупреждение C26495 (MEMBER_UNINIT) (члены класса не инициализированы в конструкторе). Компилирую версией 19.28 (из VS, обновленной пару месяцев назад) тестовый файл, в котором конструктор не инициализирует ни одного из членов — ни ошибок, ни предупреждений нет. Как заставить это предупреждение работать?

Warning Level 4? Должно вроть помочь...
Aml Pages Home
Re: Как заставить VC++ выдавать предупреждение MEMBER_UNINIT?
От: Alexander G Украина  
Дата: 02.07.21 12:23
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>У VC++ есть предупреждение C26495 (MEMBER_UNINIT) (члены класса не инициализированы в конструкторе).


Только это не компилятора, а Code Analysis.

Analyze -> Configure Code Analysis чтобы включить его, дальше Run Code Analysis
Русский военный корабль идёт ко дну!
Re[2]: Как заставить VC++ выдавать предупреждение MEMBER_UNINIT?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 02.07.21 12:30
Оценка:
Здравствуйте, Carc, Вы писали:

C>Warning Level 4? Должно вроть помочь...


Не помогает.
Re[2]: Как заставить VC++ выдавать предупреждение MEMBER_UNINIT?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 02.07.21 12:31
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Только это не компилятора, а Code Analysis.


Так анализ кода делает компилятор.

AG>Analyze -> Configure Code Analysis чтобы включить его, дальше Run Code Analysis


Я не из-под студии, из командной строки. Ключ /analyze тоже не помогает.
Re[3]: Как заставить VC++ выдавать предупреждение MEMBER_UNINIT?
От: Alexander G Украина  
Дата: 02.07.21 13:34
Оценка: 14 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Я не из-под студии, из командной строки. Ключ /analyze тоже не помогает.


У меня получилось из коммандной строки так:

D:\Temp>type test.cpp
struct S
{
    S() {}

    int i;
};

int main()
{
    S s;
    return s.i;
}
D:\Temp>set esp.extensions=cppcorecheck.dll

D:\Temp>cl /analyze /analyze:plugin EspXEngine.dll test.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29337 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

test.cpp
D:\Temp\test.cpp(3) : warning C26455: Default constructor may not throw. Declare it 'noexcept' (f.6).
D:\Temp\test.cpp(3) : warning C26495: Variable 'S::i' is uninitialized. Always initialize a member variable (type.6).
D:\Temp\test.cpp(10) : warning C26496: The variable 's' is assigned only once, mark it as const (con.4).
Microsoft (R) Incremental Linker Version 14.28.29337.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:test.exe
test.obj


https://docs.microsoft.com/en-us/cpp/code-quality/using-the-cpp-core-guidelines-checkers?view=msvc-160#non-msbuild-projects
Русский военный корабль идёт ко дну!
Re[4]: Как заставить VC++ выдавать предупреждение MEMBER_UNINIT?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 02.07.21 15:16
Оценка: +1
Здравствуйте, Alexander G, Вы писали:

AG>У меня получилось из коммандной строки так:

AG>D:\Temp>set esp.extensions=cppcorecheck.dll
AG>D:\Temp>cl /analyze /analyze:plugin EspXEngine.dll test.cpp

Ага, спасибо, так работает, даже без esp.extensions.

Вот что им мешало в описаниях предупреждений указать, какие плагины их выдают?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.