-
Я наконец довел тот проект, которым занимался в последние месяцы, до состояния, когда его можно показать публике. Встречайте FixInsight: http://sourceoddity.com/fixinsight/FixInsight - статический анализатор, позволяющий находить потенциально проблемные места в коде на Delphi. Больше информации и скриншоты есть по ссылке. Например, вот такой нездоровый код, когда некто оставил пустым блок except будет найден автоматически: try
DoWork;
except
end; Что сэкономит кому-то немного времени :) Полный список отслеживаемых ситуаций можно посмотреть вот тут http://sourceoddity.com/fixinsight/doc.html#rulesБета версия, не все совершенно. Но это только начало :)
-
-
как и говорил - давно пора :-)
-
Привет. Пустой finally опасен тем, что в нем забыли что-то написать ?
Object "Foo" created in TRY block Я раньше часто так делал. Даже писал на мастерах об этом как то. По-моему ничего криминального
-
> Привет. Пустой finally опасен тем, что в нем забыли что- > то написать ?
опасен, создал - удали
> Object "Foo" created in TRY blockЯ раньше часто так делал. > Даже писал на мастерах об этом как то. По-моему ничего > криминального
почти та же причина в этом блоке выбросит ктонить исключение - объект останется неудаленным
-
Спасибо. Есть польза от статических анализаторов, нашел несколько неточностей. Использую еще вот такое: http://www.peganza.com/#PALчитал про такой для плюсов: http://www.viva64.com/ru/d/в качестве затравок для будущих идей. из пеганзы хотелось бы довольно легко реализуемые: "const s string" вместо "s string" в параметрах функций то же самое для открытых массивов если бы в анализе format кроме числа переменных был тип - было бы супер! бывают там ошибки из-за сменившихся типов переменных.
-
> silver © (06.10.14 21:13) [4] > > Пустой finally опасен тем, что в нем забыли что-то написать ? > опасен, создал - удали
Сильное утверждение. Всё равно, что сказать «if без else опасен». Нередко попадаются операции, которые кидают бесполезные в контексте задачи исключения.
-
> Kerk © (06.10.14 19:55)
> Но это только начало :)
надо идеи начинать собирать
> Дмитрий Белькевич © (06.10.14 23:20) [5]
> если бы в анализе format кроме числа переменных был тип > - было бы супер!
Но функция Format сама же интерпретирует свою строку, это не часть языка.
-
> RWolf © (06.10.14 23:34) [6] >
> Нередко попадаются операции, которые кидают бесполезные > в контексте задачи исключения.
Чревато все же ошибками. Так можно ненароком задавить постороннее исключение, а не то которое мы ожидаем и потом долго искать проблему. Если уж давить то хотя бы выборочно.
-
> Дмитрий Белькевич © (06.10.14 23:20) [5] > DVM © (06.10.14 23:37) [7]
Да, идеи активно ищутся :) Не все пока можно реализовать, но многое вполне в рамках возможного.
-
ИМХО.
Для начинающих - полезно. Для профи - вряд ли, потому что таких очевидных ляп они уже практически не делают.
Тем не менее, впечатление хорошее.
-
> Kerk © (06.10.14 19:55) > > Я наконец довел тот проект, которым занимался в последние > месяцы, до состояния, когда его можно показать публике. > > Встречайте FixInsight
А почему поддерживаемые версии Дельфи начинаются с Д2010?
-
> silver © (06.10.14 21:13) [4] > > > Object "Foo" created in TRY blockЯ раньше часто так делал. > > > Даже писал на мастерах об этом как то. По-моему ничего > > криминального > > почти та же причина > в этом блоке выбросит ктонить исключение - объект останется > неудаленным
Угу. Почти та же причина, но с точностью до наоборот. Возникнет исключение в конструкторе - объект не будет создан. А что тогда пытаемся удалить в finally?
-
> Юрий Зотов © (07.10.14 01:21) [10]
Отвечу своей имхой :) Это всем полезно, потому что никто не совершенен. Тем более когда в проекте много людей. А так как работает оно автоматически и довольно быстро, то даже если хотя бы иногда будет что-то находить, то уже хорошо и полезно. Вот возьмем простой пример: if Abc then;
raise Exception.Create('abc'); Это даже не ошибка. Просто опечатка - палец скользнул. Глазами тут проблему найти не так уж легко, а анализатор легко справится. Уже справляется. Таких маленьких примеров я много могу приводить. > Германн © (07.10.14 01:24) [11] > А почему поддерживаемые версии Дельфи начинаются с Д2010?
В D2010-XE7 пакет компилируется без изменений. В 2009 не компилируется. У меня пока времени не было разобраться, чего она от меня хочет. Но так вообще принципиальных ограничений нет.
-
> В 2009 не компилируется. У меня пока времени не было разобраться, > чего она от меня хочет. Но так вообще принципиальных ограничений > нет.
Я вообще-то имел в виду Д2007. Последнюю неюникодную, но в то же время "первую" Rad Studio.
-
Ответ тот же самый :) У меня в планах поддержка всех версий, начиная с 2006. Но что успел, то успел :)
-
> Kerk © (07.10.14 01:46) [13] > > if Abc then; > raise Exception.Create('abc');
Пример неудачный, поскольку:
1. Безусловные исключения проявляют сами себя и поэтому легко ловятся на первых же этапах тестирования. Отладчик покажет точку возникновения исключения, а не увидеть в ней пустой оператор может разве что слепой.
2. Последующий код будет отмечен компилятором, как недостижимый, причем даже и без тестирования. И если мы придерживаемся профессионального стиля кодинга "варнингов быть не должно", то не увидеть этот единственный варнинг тоже может разве что слепой.
PS Возможно, есть и более сложные примеры. Но в материале по ссылке я таких не нашел. Там ошибки именно уровня начинающих - чем и было обусловлено мое ИМХО.
-
Кстати, а комментарии учитываются? Будет ли поймано вот такое: raise Exception.Create('abc');
Или вот такое:
-
Юрий Зотов © (07.10.14 02:10) [16]
> Последующий код будет отмечен компилятором, как недостижимый, > причем даже и без тестирования.
Не будет. Delphi так не умеет. А вот FixInsight умеет. Думаю, одного только этого аргумента достаточно.
Разговоры про начинающих-заканчивающих считаю неконструктивными. Все люди ошибаются, бывают невнимательными, у всех есть коллеги разной степени оригинальности. Идеальных людей я пока только в интернете на форумах видел :)
Но имхо есть имхо. Это нормально.
-
> Юрий Зотов © (07.10.14 02:20) [17] > > Кстати, а комментарии учитываются?
Конечно учитываются :)
|