С ES5 + (любой просматриваемый в настоящее время - 2017) вы должны иметь возможность делать
[].forEach.call(document.getElementsByClassName('answer'), function(el) {
el.style.color= 'red';
});
Так как броски явно легальны и верный способ выполнения странных преобразований, очень маловероятно, что gcc будет содержать опцию для предупреждения о них
. Вместо этого, в зависимости от того, насколько огромный ваш источник, вы можете уметь уйти с:
grep '\(double|float\) ' *
, чтобы дать вам все двойные или плавающие переменные. Так как c не является обычным языком, нет тривиального (с инструментами оболочки) для его синтаксического анализа в список двойных или плавающих переменных, но если ваш источник достаточно мал, сделать это вручную легко.
grep '([^()]*)[ ()]*\(your list of variable names\)' *
Оттуда вы увидите много ваших приемов.
Ну, я думаю, что такого варианта нет. В конце концов, компилятор выдает предупреждение, чтобы предупредить вас о том, что вы, возможно, сделали непреднамеренно. Явное приведение, однако, в основном способ сказать вашему компилятору «заткнуться, я знаю, что я делаю».
Хотя компиляторы, которых я знаю, не имеют для этого вариантов, FlexELint от Gimpel может делать то, что вы хотите:
$ cat tst.c
int main (void)
{
int i = 0, j = 0;
float f = 0.0;
double d = 0.0;
i = (int) f;
j = (int) d;
d = (double) f;
f = (float) d;
i = (int)j;
j = (unsigned) i;
return (int) j;
}
$ flexelint -w1 +e922 tst.c
FlexeLint for C/C++ (Unix) Vers. 9.00j, Copyright Gimpel Software 1985-2012
--- Module: tst.c (C)
_
i = (int) f;
tst.c 7 Note 922: cast from float to int
_
j = (int) d;
tst.c 8 Note 922: cast from double to int
_
d = (double) f;
tst.c 9 Note 922: cast from float to double
_
f = (float) d;
tst.c 10 Note 922: cast from double to float
shell returned 4
-Wconversion
предупреждают о неявных преобразованиях, которые могут изменить значение (double
являются большими типами), а -Wno-sign-conversion
отключить предупреждения о конверсиях между целыми числами без подписей и без знака (поэтому было бы меньше ненужных предупреждений). Else Я не вижу стандартной альтернативы ...
В худшем случае вы можете искать эти ключевые слова непосредственно в своих исходных файлах ...
-Wconversion
для перехвата конверсий accidential i>, а количество шумов, генерируемых из явных (и предполагаемых) преобразований, было невыносимым.
– Damon
25 April 2012 в 17:10
Если ваш C-код также может быть скомпилирован в режиме C ++, вы можете использовать флаг предупреждения g ++ -Wold-style-cast
, чтобы вызвать предупреждение для всех таких приведений.
Вы можете определить, есть ли у Клана какие-либо предупреждения, которые будут триггер для конкретного шаблона кодирования с помощью его переключателя -Weverything
(но обратите внимание, что это не полезно практически для любой другой цели - clang имеет предупреждения по умолчанию, которые запускаются на различных формах законного кода). Однако в этом случае у clang нет никаких предупреждений, вызывающих такие отбрасывания.