Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2017.10.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.01 c
2-1449055785
Анна
2015-12-02 14:29
2017.10.22
PageControl1 не отображает названия Sheet в windows 7


2-1448552760
SitiZen
2015-11-26 18:46
2017.10.22
Формула


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


2-1446125074
NitroTek
2015-10-29 16:24
2017.10.22
Шаблоны


15-1412610938
Kerk
2014-10-06 19:55
2017.10.22
FixInsight for Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский