Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.10.22;
Скачать: CL | DM;

Вниз

FixInsight for Delphi   Найти похожие ветки 

 
DVM ©   (2014-10-07 15:39) [40]


> Игорь Шевченко ©   (07.10.14 15:21) [39]


> Вот мне интересно, кто-нибудь из этого встроенного аудита
> хоть какую-то пользу имеет ? Кроме тучи цифири, в которой
> без стакана разобраться невозможно, я там ничего полезного
> не обнаружил

Аналогично. Слишком там всего много и большая часть - бестолковая на практике.
Его настраивать очень долго надо под себя, тогда может и будет полезен. Но нужно завидное терпение.


 
ProstoTak ©   (2014-10-07 17:09) [41]

Да, я тоже подумал, что Kerk прочитал про PVS Studio на хабре (пиарятся они толково) и решил что-то типа такого запилить )


 
Rouse_ ©   (2014-10-07 19:24) [42]


> Игорь Шевченко ©   (07.10.14 15:21) [39]
> DVM ©   (07.10.14 15:14) [38]
>
> Вот мне интересно, кто-нибудь из этого встроенного аудита
> хоть какую-то пользу имеет ?

Исходя из того что на нашем проекте тупо падает (примерно полтора ляма строк кода только на основе, без учета кода от плагинов и т.п.) пользы нет вообще.
На более легком пробовал запустить - как ты и сказал: "тучи цифири, в которой без стакана разобраться невозможно"


 
Rouse_ ©   (2014-10-07 19:30) [43]

Кстати вопрос в принципе по теме (парсинг и анализ кода) я в свое время писал анализатор проекта, который показывал бы понятную глазу диаграмму зависимостей классов.
http://rouse.drkb.ru/other/uw.gif

Он тогда был заточен под 2007, впрочем проект я забросил, а те люди, которым передал исходники так и не стали его развивать.
Оть тут последнее о нем упоминание: http://www.delphimaster.net/view/1-1237789977/all

Вот щас на XE4 он конечно не работает, но вопрос: а есть ли аналоги такого плана? Мне нужно просто диаграму посмотреть дабы правильно все зарефакторить.

ЗЫ: Если аналогов нет, а инструмент лично мне нужен, придется конечно его поднимать опять и пробовать перепилить на ХЕ4 взяв за основу парсер от Ромки


 
MBo ©   (2014-10-07 19:35) [44]

Rouse_
Вот эти инструменты нужного тебе не делают?  (я глубоко не смотрел)
http://www.peganza.com/


 
Kerk ©   (2014-10-07 19:38) [45]


> Rouse_ ©   (07.10.14 19:30) [43]
> диаграмму зависимостей классов.

Это не оно?
http://www.modelmakertools.com/


 
ProstoTak ©   (2014-10-07 20:08) [46]


> примерно полтора ляма строк кода

и сколько по времени билд?


 
Rouse_ ©   (2014-10-07 20:10) [47]


> Kerk ©   (07.10.14 19:38) [45]
> Это не оно?

Неа. Ну в принципе как - оно конечно, но не фурычит оно так, как мне нужно, именно поэтому и писал свой инструмент под прошлый рефакторинг.


> MBo ©   (07.10.14 19:35) [44]

Спасибо, завтра гляну.


 
Rouse_ ©   (2014-10-07 20:11) [48]


> ProstoTak ©   (07.10.14 20:08) [46]
> и сколько по времени билд?

Дебаг в районе 45 секунд, релиз около 4 минут (билд, защита, снятие хэшей, цифровуха и т.п.)


 
turbouser ©   (2014-10-08 10:13) [49]


> Kerk ©

А можно сделать portable версию? Что бы без setup/install?


 
Cobalt ©   (2014-10-08 10:19) [50]

[FixInsight Warning] untFrontolSvc.pas(104): W511 Object "SDE" created in TRY block

Добавь проверку, что объект освобождается в Finally
там конструкция
   SDE := nil;
   try
     SDE := TServiceOperation.Create;
   ...
   finally
     FreeAndNil(SDE);
   end;


 
Игорь Шевченко ©   (2014-10-08 10:28) [51]

Cobalt ©   (08.10.14 10:19) [50]

Такой код желательно переписать на

SDE := TServiceOperation.Create;
try
 ...
finally
 SDE.Free;
end;


 
junglecat ©   (2014-10-08 10:39) [52]

код в [50] может иметь смысл, если несколько объектов создается


 
Дмитрий Белькевич ©   (2014-10-08 10:44) [53]

>код в [50] может иметь смысл, если несколько объектов создается

в параллельных потоках? или как?

всё равно лучше [51] делать


 
Дмитрий Белькевич ©   (2014-10-08 10:45) [54]

>Добавь проверку, что объект освобождается в Finally

здесь проблема не в том, что объект освобождается в файнали, а в том, что он создаётся в блоке try.


 
junglecat ©   (2014-10-08 10:46) [55]

> [53] Дмитрий Белькевич ©   (08.10.14 10:44)

obj1 := TClass1.Create;
...
objN := TClass1.Create; -> exception, obj1-obj[N-1] - утечка памяти
try

finally
 objN.Free;
 ...
 obj1.Free;
end;


 
Игорь Шевченко ©   (2014-10-08 11:32) [56]

junglecat ©   (08.10.14 10:39) [52]

С точки зрения компилятора любой код имеет право на жизнь. С точки зрения программиста один код проще читается, в нем легче разобраться и меньше мест для потенциальных ошибок. Другой код читается труднее, в нем дольше разбираться, ...

Для меня образцом хорошего кода служат исходные тексты VCL, до 1999 года. При их изучении я не сталкивался с одновременным созданием и освобождением нескольких объектов с необходимостью обнуления ссылок на них перед созданием.

Сразу возникает вопрос, а почему бы эту группу связанных объектов не объединить в один класс и создавать и уничтожать именно этот класс.


 
Cobalt ©   (2014-10-08 11:40) [57]

Бывает так, что этих классов всего 2-3 штуки и они смыслово между собой не связаны.
Скажем, два словаря, Тстринглист, Тстрим и какой-нить FTP


 
Игорь Шевченко ©   (2014-10-08 12:04) [58]

Cobalt ©   (08.10.14 11:40) [57]

Мне кажется, что дизайном в этом случае что-то не так. Еще раз, посмотри в VCL там вполне массово используемый продукт.

Я к чему - если Рома делает программу, ищущую недостатки или потенциальные ошибки в работающем коде, то не стоит туда вводить правила, скажем так, расчитанные на поощрение такого рода приемов в разработке приложений. Точно так же можно сказать, что except end вполне себе допустимая конструкция, "я же знаю, что исключения возникнуть только определенного типа и я хочу их игнорировать".


 
junglecat ©   (2014-10-08 12:16) [59]

> Для меня образцом хорошего кода служат исходные тексты VCL,
> до 1999 года

а я бы не брал их за идеал в данном случае. Потому как это абстрактный фреймворк, не имеющий связи с какой-либо предметной областью.
А в рамках предметной области могут быть разные казусы. В том числе и создание нескольких явно не связанных объектов в одном участке кода.


 
Игорь Шевченко ©   (2014-10-08 12:43) [60]

junglecat ©   (08.10.14 12:16) [59]

Он этим и хорош в качестве образца для правил подобного анализатора. Потому что анализатор тоже не завязан на предметную область.

В рамках предметной области я бы рекомендовал ставить в коде какой-нибудь мета-тег, чтобы анализатор на код не реагировал, например.

По аналогии с {$HINTS OFF} в компиляторе


 
Dennis I. Komarov ©   (2014-10-08 12:45) [61]

Ром, сия штука удаляется (обновляется)?


 
Kerk ©   (2014-10-08 12:47) [62]


> turbouser ©   (08.10.14 10:13) [49]
>
> > Kerk ©
>
> А можно сделать portable версию? Что бы без setup/install?

Это как? Будешь вручную пакеты в IDE устанавливать? :)

> Dennis I. Komarov ©   (08.10.14 12:45) [61]
>
> Ром, сия штука удаляется (обновляется)?

Не понял связь между удалением и обновлением. Но удалить ее можно через диалог "Установки/удаления программ" Windows.


 
Dennis I. Komarov ©   (2014-10-08 12:54) [63]


> Kerk ©   (08.10.14 12:47) [62]

Я не знаю, как ты ее в IDE запихиваешь, поэтому спросил)


 
Kerk ©   (2014-10-08 12:57) [64]


> Dennis I. Komarov ©   (08.10.14 12:54) [63]

Никакой магии. В дельфовом диалоге Components->Install Packages ты можешь увидеть пакет.


 
Dennis I. Komarov ©   (2014-10-08 13:05) [65]


> В дельфовом диалоге Components->Install Packages ты можешь
> увидеть пакет.

наверное могу... но не вижу(


 
Kerk ©   (2014-10-08 13:09) [66]

Ну тут одно из двух. Либо оно у тебя не установлено, либо плохо ищешь :)


 
Dennis I. Komarov ©   (2014-10-08 13:59) [67]


> Kerk ©   (08.10.14 13:09) [66]

Ну черт знает... запустил setup -> c:\Program Files\FixInsight\
Запускаю IDE...
Components->Install Packages

Что не так? Ребут нужен?


 
Игорь Шевченко ©   (2014-10-08 14:04) [68]

Dennis I. Komarov ©   (08.10.14 13:59) [67]

Сетап спрашивает, для какой версии Delphi установить. Он у тебя спрашивает ? :)


 
Dennis I. Komarov ©   (2014-10-08 14:12) [69]


> Игорь Шевченко ©   (08.10.14 14:04) [68]

Да, XE5


 
Kerk ©   (2014-10-08 14:23) [70]


> Dennis I. Komarov ©   (08.10.14 14:12) [69]

Ты конкретно в списке установленных пакетов найти не можешь или у тебя вообще в IDE ничего нового не появилось? Меню "Run FixInsight..." и всего такого тоже нет?


 
turbouser ©   (2014-10-08 14:23) [71]


> Kerk ©   (08.10.14 12:47) [62]


> Это как? Будешь вручную пакеты в IDE устанавливать? :)

Ну, в общем да


 
Dennis I. Komarov ©   (2014-10-08 14:39) [72]


> Меню "Run FixInsight..." и всего такого тоже нет?

нет


 
Dennis I. Komarov ©   (2014-10-08 14:43) [73]

Скрины в почте


 
Kerk ©   (2014-10-08 14:53) [74]

Ого. Так бы сразу и сказал. Ответил в почту. Предлагаю там продолжить)


> turbouser ©   (08.10.14 14:23) [71]
>
> > Kerk ©   (08.10.14 12:47) [62]
> > Это как? Будешь вручную пакеты в IDE устанавливать? :)
>
> Ну, в общем да

Это можно легко сделать. Но смысл?


 
Rouse_ ©   (2014-10-08 19:18) [75]

Отпишусь здесь. В принципе Ром ты это уже все от меня слышал, но пишу чтоб народ мог дооформить саму идею.

Итак: консоль нужна обязательно.

По пунктам:
1. любое нормальное ПО собирает билдсервер, проводящий кучу проверок при самом билде и принимающий решение на каждом этапе - можем ли мы собрать релиз или нет.
2. анализ кода, проводимый твоей утилитой, очень хорошо способствует нахождению непреднамеренных ошибок (очепяток).
Кстати вчера тестируя твою бету выловил опасный глюк в коде от аутсорсера (в том модуле над которым ты смеялся... ага - он там опять внес свои правки :)

Что хотелось бы от консоли:

Конфигурилка параметров запуска.
Самое простое что я вижу, пока цеплять настройки из внешнего СFG файла (люого формата INI или XML), бо писать обвес еще и на парсинг командной строки - просто потратишь время.

Вывод результата - он должен быть двухуровневый, краткий в виде кода завершения процесса, который покажет что есть проблемма. И расширенный, желательно формализованный в виде XML, по которому билдсервер уже сам сможет принять решение - бродолжать сборку или нет.

Третье:
Обязательно введи такую вещь, как исключение по дефайнам. К примеру я точно знаю что код от строчки А до строчки Б - кривой, и я не хочу чтоб твой анализатор на нем спотыкался. Помимо этого обязательно введи глобальный дефайн на модуль целиком, чтоб можно было сказать - вот этот модуль вообще страшный: "Это писал ПРОГРАММИСТ - Это надо переписывать" © :)


 
Rouse_ ©   (2014-10-08 19:20) [76]

Ну и обязательно конечно разберись с ошибками двойного присваивания на Add, а так-же перекрытия классового оператора In.
Ждем апдейта.


 
Rouse_ ©   (2014-10-08 20:19) [77]

ЗЫ: ну и отдельное респектище тебе Ромч, за то что твой анализатор ввел в наш обиход такое понятие, как "передернуть переменную" :)
Показав нам вот такую глупость в коде аутсорсера :)

procedure ItogRebuild;
begin
  with fmSetupExportItog.GsSmetaItog do
   begin
     if ChapterNumber=0 then
       begin ChapterNumber := 1;
             ChapterNumber := 0;
       end
     else begin ChapterNumber := ChapterNumber - 1;
                ChapterNumber := ChapterNumber + 1;
          end;
   end;
end;


 
Eraser ©   (2014-10-08 20:28) [78]

windows 8.1 ругается на дистрибутив (smartscreen), не дает запустить. имеет смысл, отказаться пока что от exe обертки вокруг msi.

https://dl.dropboxusercontent.com/u/26403307/smartscreen.png


 
Дмитрий Белькевич ©   (2014-10-08 20:30) [79]

>Показав нам вот такую глупость в коде аутсорсера :)

достойно http://govnokod.ru/

:)

хороший анализатор, кто бы что ни говорил. стоит дальше развивать, определенно.


 
Дмитрий Белькевич ©   (2014-10-08 20:32) [80]

>https://dl.dropboxusercontent.com/u/26403307/smartscreen.png

у меня нормально. 8.1.



Страницы: 1 2 3 4 5 6 вся ветка

Текущий архив: 2017.10.22;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.014 c
2-1448527183
Арлекино
2015-11-26 11:39
2017.10.22
Пару вопросов про указатели


2-1448345611
lewka
2015-11-24 09:13
2017.10.22
html код выполненного JavaScript


2-1449055785
Анна
2015-12-02 14:29
2017.10.22
PageControl1 не отображает названия Sheet в windows 7


2-1448787318
vegarulez
2015-11-29 11:55
2017.10.22
TWebBrowser [CommandStateChange] получение перменных.


2-1448611590
ShurikSNZ
2015-11-27 11:06
2017.10.22
При компиляции в новой версии выдает ошибку constant expression v