Форум: "Прочее";
Текущий архив: 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