Comments 32
А вы их честно проверяете — или просто выдергиваете элементы Compile?
Проектные файлы используются в том числе и для получения компиляции, из которой извлекается семантическая информация, необходимая для глубокого анализа.
Я об этом писал в этой статье.
"Честная проверка" означает, что на вход анализатора попадают все участвующие в компиляции файлы, независимо от того, были ли они статически указаны в файле проекта.
Visual Studio, когда подсвечивает код, собирает файлы честно. По крайней мере, 2012я версия — точно. А вот разработчики R#, к примеру, схалтурили...
if (periods == null || periods.Count() == 0) { /*...*/ }
Выдает на него следующее:
V3063. A part of conditional expression is always true/false if it is evaluated
Но ведь здесь все логично, проверка или идет до первого срабатывания слева направо, если коллекция не null, хочу проверить наличие элементов в ней. Если бы здесь стояло логическое И, то ошибка была бы понятна, т.к. были бы взаимоисключающие части условия.
В общем, все правильно он показал.
Например, идея которую предлагает log4net или NLog, где в каждом классе нужно получать логгер, плюс писать что то вроде logger.Log.Info кажется избыточным, а вот идея писать в любом месте Log.Info() минималистичнее и удобнее.
Скажите а Xamarin проверять не планируете?
Или Вы о чём-то другом?
Игра всё таки была не очень сложная, т.к. определить тип ошибки по виду кода было не очень сложно — первым вариантом было последовательное присвоение, вторым — именно одинаковое условие в двух частях тернарного оператора. Беглым просмотром находится идентичные части.
Найди в реальном коде? Сначала подумалось что гораздо сложнее. Потом вдумался. Если я правильно понимаю что делает код, то он выставляет цвет нажатой кнопки. Заметив "баг" будет довольно очевидно, где его искать. Так что, ИМХО, пример для "найди ошибку сам" можно было сделать и посложнее.
Все мы люди, Alexis действительно просто не понял вас :-). Попробую сейчас пингануть кого-нибудь.
Пофикшено, скоро будет доступно :-).
Еще бы чуть больше информации как именно пофиксили — нашли свое решение, или через usleep? Да и закрытый тикет не помешал бы :)
Ищем ошибки в Mono: сотни их