про статические проверки

Привет, All !

А какие есть проверяльщики кода, которые аккуратно ругнутся на потерю точности при присваиваниях или при неявном приведении 'простых' типов в выражениях? gcc/g++ при самых жестких настройках проверяет только сравнение знакового с беззнаковым.

примеры плохого кода:

char foo( int a, int b) { return a+b; // int урезается до char }

unsigned int bar1(int a, int b) { return a+b; // знаковое урезается до беззнакового. при отрицательном будут проблемы }

long long bar3(int a, int b) { return a+b; // возможна потеря точности }

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Они таки говорят на языке Б-га! на англицком!

Reply to
Nickita A Startcev
Loading thread data ...

Hello, Nickita! You wrote to All on Fri, 31 Jan 2014 21:22:50 +0400:

NAS> unsigned int bar1(int a, int b) NAS> { NAS> return a+b; // знаковое урезается до беззнакового. при NAS> отрицательном будут проблемы }

В каком смысле урезается? Разве операция сложения чем-то отличается для знакового и беззнкового?

dima

formatting link

Reply to
Dmitry Orlov

-Wconversion -Wdouble-promotion -Wfloat-equal -Wignored-qualifiers

-Wno-pointer-to-int-cast -Wreturn-type -Wsign-compare -Wsign-conversion

--
Alexey V. Vissarionov aka Gremlin from Kremlin
Reply to
Alexey Vissarionov

-Wall This enables all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. This also enables some language-specific warnings described in C++ Dialect Options and Objective-C and Objective-C++ Dialect Options.

-Wall turns on the following warning flags:

-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wenum-compare (in C/Objc; this is on by default in C++) -Wimplicit-int (C and Objective-C only) -Wimplicit-function-declaration (C and Objective-C only) -Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding) -Wmissing-braces -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type -Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wvolatile-register-var

Note that some warning flags are not implied by -Wall. Some of them warn about constructions that users generally do not consider questionable, but which occasionally you might wish to check for; others warn about constructions that are necessary or hard to avoid in some cases, and there is no simple way to modify the code to suppress the warning. Some of them are enabled by -Wextra but many of them must be enabled individually. ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

--
Alexey V. Vissarionov aka Gremlin from Kremlin
Reply to
Alexey Vissarionov
31 Jan 14 21:22, you wrote to All:
Reply to
Eugene Muzychenko
01 Feb 14 11:04, you wrote to Nickita A Startcev:
Reply to
Eugene Muzychenko

Привет!

01 Feb 14 12:34, you wrote to me:

AV> Some of them are enabled by -Wextra but many of them must AV> be enabled individually.

Вот это идиотизм, однозначно.

Всего доброго! Евгений Музыченко snipped-for-privacy@muzy-chen-ko.net (все дефисы убрать)

Reply to
Eugene Muzychenko

Привет, Alexey !

01 Feb 14 , 11:04 Alexey Vissarionov писал к Nickita A Startcev:

NS>> А какие есть проверяльщики кода, которые аккуратно ругнутся на NS>> потерю точности при присваиваниях или при неявном приведении NS>> 'простых' типов в выражениях? gcc/g++ при самых жестких NS>> настройках проверяет только сравнение знакового с беззнаковым.

AV> ЩИТО?!

банальное "недоосилил документацию, решил, что -W -Wall хватит". а вообще, это странная идея, считать что "all" - это не всё. кстати, -Weverything -- тоже не всё, или сегодня всё а в соседней минорной версии станет не всё, и появится -Wall-very-very-everything?

AV> -Wconversion -Wdouble-promotion -Wfloat-equal -Wignored-qualifiers AV> -Wno-pointer-to-int-cast -Wreturn-type -Wsign-compare AV> -Wsign-conversion

AV> В порядке ликбеза: -Wall включает не все эти проверки.

дурное именование ключа, да.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... должность придворного бушмейстера не занимал

Reply to
Nickita A Startcev

Привет, Michael !

02 Feb 14 , 01:15 Michael Belousoff писал к Nickita A Startcev:

AV>>> В порядке ликбеза: -Wall включает не все эти проверки.

NS>> дурное именование ключа, да.

MB> -Wall: "убейся апстену!"

ага. 'ключ компилятора "-Стена"'

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... "кАнтора Государственной Безопасности"

Reply to
Nickita A Startcev

Привет, Nickita.

Вот что Nickita A Startcev wrote to Alexey Vissarionov:

NS> 01 Feb 14 , 11:04 Alexey Vissarionov писал к Nickita A Startcev:

NS>>> А какие есть проверяльщики кода, которые аккуратно ругнутся на NS>>> потерю точности при присваиваниях или при неявном приведении NS>>> 'простых' типов в выражениях? gcc/g++ при самых жестких NS>>> настройках проверяет только сравнение знакового с беззнаковым.

AV>> ЩИТО?!

NS> банальное "недоосилил документацию, решил, что -W -Wall хватит". NS> а вообще, это странная идея, считать что "all" - это не всё. NS> кстати, -Weverything -- тоже не всё, или сегодня всё а в соседней NS> минорной версии станет не всё, и появится -Wall-very-very-everything?

AV>> -Wconversion -Wdouble-promotion -Wfloat-equal -Wignored-qualifiers AV>> -Wno-pointer-to-int-cast -Wreturn-type -Wsign-compare AV>> -Wsign-conversion

AV>> В порядке ликбеза: -Wall включает не все эти проверки.

NS> дурное именование ключа, да.

-Wall: "убейся апстену!"

--Michael G. Belousoff-- Yekaterinburg city mickbell(dog)mail(dot)ru

... ==== Проблему надо решать до того, как она появится. ====

Reply to
Michael Belousoff

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.