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

Вниз

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

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

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

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


 
Eraser ©   (2014-10-08 20:41) [81]

на вот такую конструкцию в объявлении интерфейса


function D3D11CreateDevice(
 Adapter: IDXGIAdapter;
 DriverType: D3D_DRIVER_TYPE;
 Software: HMODULE;
 Flags: UINT;
 pFeatureLevels: PD3D_FEATURE_LEVEL;
 FeatureLevels: UINT;
 SDKVersion: UINT;
 out Device: ID3D11Device;
 pFeatureLevel: PD3D_FEATURE_LEVEL;
 out ImmediateContext: ID3D11DeviceContext):HRESULT; stdcall; external DLL_D3D11 delayed;


ругнулось
Fatal parser error


 
Eraser ©   (2014-10-08 20:43) [82]


> объявлении интерфейса

точнее это не в объявлении интерфейса :-) просто внешняя системная API функция.


 
Kerk ©   (2014-10-08 21:27) [83]

А почему винда считает, что msi безопаснее, чем exe? Я вообще подумал, что дело в отсутствии электронной подписи, но я от этого пока далёк.

InnoSetup не умеет вроде msi делать. Вот ведь нежданный геморрой.


 
ProstoTak ©   (2014-10-08 21:27) [84]


> любое нормальное ПО собирает билдсервер

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


 
Rouse_ ©   (2014-10-08 21:30) [85]


> Kerk ©   (08.10.14 21:27) [83]
> А почему винда считает, что msi безопаснее, чем exe?

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


 
Rouse_ ©   (2014-10-08 21:31) [86]


> ProstoTak ©   (08.10.14 21:27) [84]
>
> > любое нормальное ПО собирает билдсервер
>
> можно поспорить о том, что такое "нормальное ПО", но по
> факту билд сервер используется крайне редко в процентном
> соотношении от количества проектов

Ты вот это сейчас чисто пофлудить озвучил, или в качестве экспертной оценки?


 
Rouse_ ©   (2014-10-08 21:49) [87]

Еще нюанс, не всегда интерфейсы с TLB импортируются с префиксом "I", особливо в WebDav, но у них у всех есть автогенерированные хидерники (спорный конечно нюанс, но) на которые можно в принципе ориентироваться при генерации варнинга мол интерфейс должен начинаться с "I"


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

Rouse_ ©   (08.10.14 19:18) [75]


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


Если код компилируется, а тем более, без предупреждений, то релиз собрать можно.

Это если говорить о "любом нормальном ПО"

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


 
Kerk ©   (2014-10-08 22:21) [89]


> Eraser ©   (08.10.14 20:41) [81]
> на вот такую конструкцию в объявлении интерфейса
> Fatal parser error

В работе уже :)
http://github.com/RomanYankovsky/DelphiAST/issues/6


 
Rouse_ ©   (2014-10-08 22:25) [90]


> Если код компилируется, а тем более, без предупреждений,
>  то релиз собрать можно.

{$MESSAGE WARN "Стало быть не используем в проекте?"}

А нюансы они ж разные, кто-то к примеру SEH воткнул в код, который будет изыматься и переводиться в пикод VM - один случай (а проект-то соберется - без проблем)
Другой со скриптом инсталятора перемудрил, что он выдал ворнинг на пустом месте.
Третий, забыл подключить ресур содержащий публичные RSA ключи, и проект просто не сможет расшифровать данные.

Воть этим всем и занимается билдсервак, страхуя нас от ошибок.


 
Rouse_ ©   (2014-10-08 22:30) [91]

ЗЫ: на данный момент у нас на билдсервере на релизе 17 этапов сборки проекта. Ручками это все... ну заколебешся контролировать. Сколько общался с ребятами из других солидных контор (DrWeb/Guardant/Simantec/ReactOS) билдсерверы везде присутствуют (разные сборки но методика в принципе идентична).


 
Kerk ©   (2014-10-08 22:44) [92]


> Rouse_ ©

class operator In пофиксил уже. В следующем релизе будет нормально.
Ну и над утилитой командной строки я думаю. Не ожидал, что там много людей о ней будут спрашивать.


 
Rouse_ ©   (2014-10-08 22:49) [93]


> Игорь Шевченко ©   (08.10.14 22:15) [88]
> А если говорить о различного рода нюансах, принятых в той
> или иной группе разработчиков, то на все варианты писать
> обвески - работа длинная и неблагодарная.

Кстати вопрос. Возьмем простую схему.

Для релизного билда (обычного проекта без наворотов) нужно в принципе сделать такие вещи:
1. Слить исходники с мастер бранча SVN (или другой системы контроля версий) на машину, на которой будет собираться релиз.
2. Выставить правильную версию билда (параметры мажор/минор/релиз я даже не рассматриваю, считаем их по умолчению выставлеными).
3. Собрать релиз
4. Повесить на него подпись
5. Прогнать тесты на VirusTotal, если не прошли, гоу пункт 3
6. Собрать инсталятор
7. Собрать архив из всего что должно уйти пользователю
8. Проапдейтить архив на внешнем FTP
9. Апнуть метку о версии на сайте и в репозитории автообновления.
10. Пнуть мыло манагеру, чтоб запилил новость о выходе новой версии.

Вы это все ручками делаете?


 
Rouse_ ©   (2014-10-08 22:57) [94]


> Kerk ©   (08.10.14 22:44) [92]
> Ну и над утилитой командной строки я думаю. Не ожидал, что
> там много людей о ней будут спрашивать.

Первые беты сразу мне пуляй, у нас как раз скоро релиз, поэтому консолька как раз будет в тему (ну и багрепорты с первых рук получишь).


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

Rouse_ ©   (08.10.14 22:49) [93]

Если не трудно, все то же самое на русском языке, пожалуйста.


 
Rouse_ ©   (2014-10-09 00:01) [96]

Удалено модератором


 
Pavia ©   (2014-10-10 10:02) [97]


> Rouse_ ©   (08.10.14 22:49) [93] Если не трудно, все то
> же самое на русском языке, пожалуйста.

Не знаю только как "репозитории" перевести. Может вы подскажете?
Тот же вопрос касаемо  "реализ" ? Но слово уже попало в словари. Так что можно считать русским.  
Ниже перевод на Русский язык.

Кстати вопрос. Возьмем для примера обычного проекта без наворотов и его простой алгоритм подготовки реализной версии ПО.

Для реализной сборке, нужно сделать следующие действия:
1. Скачать исходники с главной ветки SVN (или другой системы контроля версий) на машину, на которой будет собираться версия ПО;
2. Выставить правильную версию сборки. Параметры "старшая","младшая", "модификация" я даже не рассматриваю. Считаем их по умолчанию выставленными;
3. Собрать модификацию ПО с параметром реализация;
4. Экземпляр программы подписать цифровой подписью;
5. Выполнить тестирование на VirusTotal. В случае отрицательного результата перейти к 3 пункту;
6. Собрать установщик;
7. Собрать архив из всего что должно быть отправлено пользователю
8. Обновить архив на внешнем сервере FTP;
9. Обновить сообщение о версии на сайте и в репозитории автообновления;
10. Отправить сообщение менеджеру, чтобы  тот сообщил новость о выходе новой версии.

Вы это все ручками делаете?


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

Rouse_ ©   (08.10.14 22:49) [93]


> Кстати вопрос.


> Вы это все ручками делаете?


Кстати не до конца понимаю, какое отношение технология сборки, принятая в нашей компании (или в иной другой) имеет отношение к теме ветке. Я полагаю, что это не та тема для беспокойства
Разумеется, у нас сборка автоматизирована.

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


 
Kerk ©   (2014-10-23 19:56) [99]

Господа, мне нужны счастливые обладатели Delphi 2006, 2007 или 2009 для тестирования. Напишите мне, пожалуйста, в почту (в анкете) или оставьте тут свою. Заранее благодарю.


 
Rouse_ ©   (2014-10-23 20:10) [100]

2007 могу оттестировать, 2006 - вроде где-то валялся дистрибутив, но мы давно с него спрыгнули, боюсь не смогу найти ключей активации.
Да кстати сорь - сегодня твою консольку не затестировал, бо запарка была по полной, завтра буду проверять.


 
Rouse_ ©   (2014-10-23 20:12) [101]

Ты с UTF-8 BOM префиксом точно все пофиксил? А то опять IDE ляжет наглухо, что не хотелось бы :)


 
Kerk ©   (2014-10-23 20:20) [102]

Пофиксил, да. Тестировал на том твоем юните и с ним все в порядке. Ссылку тебе слать не буду, потому что она у тебя есть. Но скачай завтра лучше заново, может до тех пор еще что-нибудь пофикшу :)


 
Kerk ©   (2014-10-23 20:21) [103]

Ну и ради меня не стоит 2006 ставить. Достаточно того, что есть :)


 
Rouse_ ©   (2014-10-23 22:19) [104]


> Kerk ©   (23.10.14 20:20) [102]
> Пофиксил, да. Тестировал на том твоем юните и с ним все
> в порядке. Ссылку тебе слать не буду, потому что она у тебя
> есть. Но скачай завтра лучше заново, может до тех пор еще
> что-нибудь пофикшу :)

Кстати знаеш что подумал, я правда не уверен что такие файлы дельфя генерирует, но работать с ними она умеет. Ты енкодинг модуля без BOM префикса тестил?

А завтра проверю, но скорее уже не я а Женька, я только общие моменты, а вот как его встраивать в билдсервак, это только он сможет сказать кгде у тебя косяки.


 
Rouse_ ©   (2014-10-23 22:22) [105]

Прочто чем это грозит, если ты не распознаешь UTF и будешь трактовать как ANSII, то сразу можешь влететь на символ "{" который будет частью UFT символа. Сам понимаешь - весь парсинг уплывет, а то еще и ошибку выдаст если закрывающего "}" не найдет.


 
Kerk ©   (2014-10-23 22:54) [106]

Нет, если преамбулы нет (так вроде оно научно называется), то кодировка не распознается. Это у меня сделано средствами дельфового класса TEncoding, а он ориентируется на первые байты. Не уверен, что требуется что-то более сложное. Но посмотрим.


 
Kerk ©   (2014-11-02 23:11) [107]

Вышла версия 2014.11
В ней есть:
 * Утилита командной строки
 * Поддержка версий 2006, 2007 и 2009
 * Возможность иметь свои настройки для каждого проекта
 * Исправленные баги


 
Kerk ©   (2015-03-24 01:22) [108]

Подниму-ка я ветку, благо версия 2015.03 уже вышла. Матереем.
http://sourceoddity.com/fixinsight/download.html


> ProstoTak ©   (07.10.14 17:09) [41]
>
> Да, я тоже подумал, что Kerk прочитал про PVS Studio на
> хабре (пиарятся они толково) и решил что-то типа такого
> запилить )

Если действительно интересно, то вдохновлялся я этой штукой
http://www.toadworld.com/products/toad-for-oracle/b/weblog/archive/2015/03/19/how-to-simplify-code-reviews-with-code-analysis-new-videos-on-toad-for-oracle-xpert-edition.aspx

А про PVS Studio уже намного позже узнал. И ты сильно недооцениваешь сопутствующие сложности, если думаешь, что можно так просто "прочитать и решить запилить" :)


 
mike-d ©   (2015-03-27 07:00) [109]

На Delphi 7 не ставится. Пичалька...


 
Kerk ©   (2015-03-27 10:50) [110]


> mike-d ©   (27.03.15 07:00) [109]
>
> На Delphi 7 не ставится. Пичалька...

К сожалению, так. Но утилита командной строки работает с любыми версиями Delphi. Правда, это уже не так удобно.

Поискал баги в VCL :) Нашлась пара интересных мест.
http://roman.yankovsky.me/?p=1748


 
virex(home) ©   (2015-03-28 07:45) [111]

>Kerk ©   (27.03.15 10:50) [110]

надо будет на работе попробовать твою тузлу, правда там дельфя 7


 
virex(home) ©   (2015-04-30 06:18) [112]

>virex(home) ©   (28.03.15 07:45) [111]

проверил консольной утилитой

просто вывод в консоль работает, а при отправке в файл - содержимое "обрывается"

пример: тузла --xml --project=c:\...\...dpr > 1.txt

в файле 1.txt не весь вывод тузлы


 
кгшзх ©   (2015-04-30 08:37) [113]

C102 Too many parameters in "TAjaxEvent.Invoke"

TAjaxEvent = class(TInterfacedObject, IDispatch)
...
  function Invoke(DispID : Integer; const IID : TGUID; LocaleID : Integer; Flags : Word; var Params; VarResult : Pointer; ExcepInfo : Pointer; ArgErr : Pointer) : HRESULT; stdcall;
---

А есть ли там предупреждения типа :

- имя метода начинается с буквы "I"
- если сложить коды символов в имени переменной xxx то получится число зверя 666?
ну и т.д.


 
virex(home) ©   (2015-04-30 09:47) [114]

>кгшзх ©   (30.04.15 08:37) [113]

да кстати
не помешало бы отключать некоторые проверки доп. опциями в консольной утилите

а так утилита полезная, вчера рефакторинг делал
в древнем проекте куча ошибок создания объекта в try и уничтожения в finally


 
Kerk ©   (2015-04-30 13:24) [115]


> virex(home) ©   (30.04.15 09:47) [114]
>
> >кгшзх ©   (30.04.15 08:37) [113]
>
> да кстати
> не помешало бы отключать некоторые проверки доп. опциями
> в консольной утилите

Это можно делать и это упомянуто в документации.
Тут я рассказываю подробнее как это сделать http://fixinsight.userecho.com/topic/686863-command-line-client-define-rules-per-parameter/


 
Юрий Зотов ©   (2015-04-30 13:56) [116]

> Kerk

Еще бы fast fix добавить, где это возможно - полная конфета была бы. Понимаю, не просто. Ну на будущее - как вариант развития.


 
Cobalt ©   (2015-04-30 15:43) [117]

[FixInsight Warning] fmuVisualListWare.pas(453): W508 Variable is assigned twice successively
   tmrFilter.Enabled := false;
   tmrFilter.Enabled := true;


 
Юрий Зотов ©   (2015-04-30 20:58) [118]

> Kerk

Кстати, обрати внимание на:
http://delphimaster.net/view/15-1430333783/

Возможное добавление к списку подозрительных конструкций: некорректное использование вложенной функции. Диагностировать можно по описателю stdcall (хотя это и грубовато, пожалуй).


 
Юрий Зотов ©   (2015-04-30 21:06) [119]

> Cobalt ©   (30.04.15 15:43) [117]

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

Но FixInsight  сработал правильно, место подозрительное.


 
Kerk ©   (2015-04-30 22:50) [120]


> Юрий Зотов ©   (30.04.15 13:56) [116]
>
> > Kerk
>
> Еще бы fast fix добавить, где это возможно - полная конфета
> была бы. Понимаю, не просто. Ну на будущее - как вариант
> развития.

Что-то такое иметь было бы очень здорово. Постепенно, надеюсь, все получится.
Вообще, как можно плотнее интегрироваться с IDE - один главных приоритетов.


> Юрий Зотов ©   (30.04.15 20:58) [118]

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


> Юрий Зотов ©   (30.04.15 21:06) [119]
>
> Но FixInsight  сработал правильно, место подозрительное.

Такие ситуация - моя большая боль. Одно дело действительно настоящие ложные срабатывания, с которыми я борюсь как могу. А другое - когда срабатывание верное, но программист эту ситуацию умышленно допустил. Это все-таки всего-лишь анализатор, а не искусственный интеллект, он не может такие тонкие вещи прочувствовать.

И по-моему в таком случае от предупреждения нет никакого вреда, человек просто посмотрит, убедится, что все в порядке и пойдет дальше.

А боль это для меня потому, что многие пользователи ждут от инструмента совершенно магического поведения и расстраиваются, что это не так. Имеют право, конечно.



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

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

Наверх




Память: 0.71 MB
Время: 0.017 c
15-1412610938
Kerk
2014-10-06 19:55
2017.10.22
FixInsight for Delphi


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


2-1448527183
Арлекино
2015-11-26 11:39
2017.10.22
Пару вопросов про указатели


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
Формула