Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi + FixInsight

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предлагаю поговорить об осмысленности некоторых правил FixInsight-а.
 
Да, я знаю, что каждое правило можно отключить в настройках. Но если иногда правило срабатывает, а иногда мешает - не набегаешься переключать...  
 
Да, я знаю про _FIXINSIGHT_, но элегантным мне это решение не кажется...
 
И уж забить и просматривать список найденного, закрывая глаза на некоторые срабатывания - тем более.
 
Итого:
Идеальным итогом обсуждения, который и ищу, хотелось бы прийти или к подтверждению "Да, это совершенно левое правило, отключить и забыть" или найти красивую замену проблемного кода.
 
 
Тема номер один:
W528: Переменная-итератор не используется внутри тела цикла.
 
С одной стороны, их вариант:
Код:
for I := 0 to 9 do
  for J := 0 to 9 do
    Matrix[I, I] := 0; // J is not used
выглядит вполне разумно. Лучше бы чтобы робот за таким присматривал. Но не парил бы меня из-за такого:
Код:
procedure Repeat(n: integer);
var i: integer;
begin
  for i := 1 to n do
    DoIt;
end;
Иногда надо повторить DoIt 7 раз, иногда 12...
И отключать правило не хочется, и как переписать - не знаю. И от _FIXINSIGHT_-а корчит...  
 
Совета ищу, в поисках красоты...  
 

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 16:01 28-06-2017
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А вот это вообще не понимаю:
W522: Деструктор без директивы override;
 
Ну и что?  
FixInsight верещит, что если я не перекрою виртуальный деструктор, Free расстроится...
Сфигали?
Free вызывает Destroy, который я даже могу корректно перекрыть.
А рядом завести собственный деструктор, которого нет в предке. Какой, к лешему, override?  
 
Похоже, вот это правило - отключить и забыть.

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 21:04 28-06-2017 | Исправлено: KDPoid, 21:05 28-06-2017
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Совета ищу, в поисках красоты...   

KDPoid, конкретно в случае W528, мне кажется, надо к автору обращаться. Он, по-моему, наш соотечественник, можно с ним и обсудить

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 21:41 06-07-2017 | Исправлено: NeoAnomaly, 21:43 06-07-2017
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как говорит гугл, FixInsight теперь принадлежит TMS Software, а это бельгийцы
 
Что с ними обсуждать, ну скажут: "да, бага, купите лицензию и ждите обновлений".
http://www.tmssoftware.com/Site/fixinsight.asp?s=history
В описании каждой версии есть строчка:  
"Fixed : Some false positives fixed"
 
Похоже, пора вспомнить DocInsight, и спросить у чувака в зеркале, не хочет ли он написать замену FixInsight-а, только более контролируемую, требующую меньше телодвижений при использовании и, конечно, более бесплатную...

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 08:40 09-07-2017
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как говорит гугл,  FixInsight теперь принадлежит TMS Software, а это бельгийцы  

KDPoid, всё так же, как и в случае с Firemonkey, Firedac, etc. Разработку продолжает автор, только под крылом корпорации
 

Цитата:
Что с ними обсуждать, ну скажут: "да, бага, купите лицензию и ждите обновлений".  

KDPoid, я пропустил этот продукт мимо, поэтому не в курсе его редакций. У вас какая-то старая бесплатная версия?
 

Цитата:
Похоже, пора вспомнить DocInsight, и спросить у чувака в зеркале, не хочет ли он написать замену FixInsight-а, только более контролируемую, требующую меньше телодвижений при использовании и, конечно, более бесплатную...  

Тут у меня возникает вопрос на сколько вообще полезен статический анализатор? У нас в CI пайплайне на финальной стадии трудится PVS Studio с репортом High & Medium alrams. Так вот соотношение ложных к полезным срабатываниям - весьма удручающее. Единственное, что совсем новичков гонять через него, а более-менее опытные разработчики - не допускают каких-то серьёзных косяков. Те же copy-paste косяки всплывают на стадии code review.

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 12:17 10-07-2017
asutp2

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NeoAnomaly, даже у опытных разработчиков бывает глаз замыливается, так что статические анализаторы не совсем бесполезны.

Всего записей: 791 | Зарегистр. 22-10-2004 | Отправлено: 12:39 10-07-2017
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
NeoAnomaly, даже у опытных разработчиков бывает глаз замыливается, так что статические анализаторы не совсем бесполезны.  

asutp2, про совсем бесполезны я не говорил, мы сами юзаем анализаторы(в особенности на драйверах). Тут скорее всё зависит от процесса разработки, если процесс протекает размеренно без авралов, практикуется code review, то до срабатывания анализатора обычно не доходит
 
Тут скорее рассуждения были в контексте: "пилить ещё одно решение".  
 
Периодически читаю на хабре блог PVS Studio - складывается впечатление, что разработка статического анализатора - довольно нетривиальная задача, а выхлоп, как от продукта - не очень. В опен сурсе, да ещё для delphi проект будет скорее мёртв, чем жив

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 13:04 10-07-2017 | Исправлено: NeoAnomaly, 13:23 10-07-2017
asutp2

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Согласен

Всего записей: 791 | Зарегистр. 22-10-2004 | Отправлено: 15:30 10-07-2017
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
KDPoid, я пропустил этот продукт мимо, поэтому не в курсе его редакций. У вас какая-то старая бесплатная версия?

Ну, э-э... delphi 10.1
Что есть в коробке - то и есть. Запуск из оболочки, консольного вызова нет, сообщения после пятого - скрыты.
 

Цитата:
Тут у меня возникает вопрос на сколько вообще полезен статический анализатор?  

Согласен с asutp2,
я думаю, что если компания может себе позволить полноценный code review, то статический анализатор они уже переросли...
 
Хотя... Работал я тут на одном проекте... Сотни разработчиков, code review в полный рост, но запустить sonar qube - только для поржать над интегральными цифрами. Разгребать это море косяков, которые могут и не взорваться в исторически накопленых частях работающей системы никто не будет
 

Цитата:
да ещё для delphi проект будет скорее мёртв, чем жив

Зависит от целей.
Если хочется заработать на этом бабла и купить остров - наверное, надо заняться чем-то другим.
А мне:
Было любопытно попробовать FixInsight. Ух-ты, иногда даже правильно срабатывает. Иногда, попытка выполнить странные пожелания, типа "уменьшить размер метода", заставляет переписать более красиво.  
Но - некоторые правила корявы, а некоторые можно было бы и добавить.
Ну и запуск из оболочки - не мой вариант.
Человек, который забывает писать const, он и fixinsight забывает запускать. А для меня - это многочисленные пуски впустую. Надоедает...
Хотелось, чтобы оно само просматривало исходники, скажем, ночью. И в случае обнаружения косяков отправляло письмом список. Или создавало html и открывало его в браузере.  
Чтобы, сев за завтраком посмотреть, что в мире делается, я, за одно, и увидел, что после вчерашних правок у меня две функции больше никогда не используются и могут быть удалены.
 
Ну и это всё-таки delphi... Некоторые классы задач тут можно реализовать на коленке после ужина.  
С мысли "а чего, собственно..." уже два дня прошло... Оно эта... уже как-то работает...
 
 
 
 

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 04:13 11-07-2017
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Ну, э-э... delphi 10.1  

KDPoid, а ок, я просто уже второй год на с/с++ и visual studio сижу, последнее, что видел - xe8.
 
А по поводу целей. Посмотреть, поиграться, попробовать реализовать - это конечно вечные вещи, без них никуда Другое дело, что задача такого класса требует постоянного развития, вот про это я и писал.
 
Вы скорее всего уже видели или даже используете, но на всякий случай оставлю это здесь(DelphiAST - основа FixInsight, на сколько я понимаю).  
 
 
 
 
 
 

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 09:50 11-07-2017
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
задача такого класса требует постоянного развития

Чёй-то?
Если я удовлетворил свою сиюминутную хотелку, так что мне теперь, поддерживать проект?
Этак вы договоритесь до того, что теперь нужно определиться с потребительским сегментом, провести исследования, сформировать баклог продукта, нарисовать роадмап и заняться пресейлом...  
Ну ние-е-ет...
Я уже больше года не пишу на Delphi за деньги.
 
Это продукт класса "а почему бы и нет", и ничего он не требует. Я получил программульку, которая мою задачу решила. Если моя задача изменится, программулька тоже изменится. А спасать мир я не подписывался, каждый может собрать себе аналогичную программульку, под свою аналогичную хотелку.
 
Дойдут руки дочитать лицензию, что я могу делать с исходными библитеками, что нет, - может и выложу исходники.
Ну а нет -  так и нет

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 04:32 13-07-2017
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Если моя задача изменится, программулька тоже изменится.

KDPoid, ну это же и есть поддержка

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 09:57 13-07-2017
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:

Цитата:
Если моя задача изменится, программулька тоже изменится.

KDPoid, ну это же и есть поддержка

 
Мне казалось, что поддерживать нужно кого-то другого, а когда я сам себя поддерживаю, это должно быть какое-то другое выражение. Может быть, "взять себя в руки"?
 
 
Ну и чтобы совсем уж не оффтопить...
 
Из новенького:  
O805
Inline marked routine ''%s'' comes after its call in the same unit
In order to be properly inlined an inline marked routine has to come before it's called in the  
same unit.
 
Типа, если вызов inline метода происходит выше, чем описание его реализации, для компилятора это проблема... Кто-бы мог подумать... Вот и в VCL такие места находятся...  
Наверное, это потому, что правило добавили только в FixInsight с Delphi 10.2, а VCL у меня от 10.1...

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 05:28 15-07-2017 | Исправлено: KDPoid, 05:30 15-07-2017
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi + FixInsight


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru