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

Вниз

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

Наверх





Память: 0.76 MB
Время: 0.029 c
2-1446125074
NitroTek
2015-10-29 16:24
2017.10.22
Шаблоны


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


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


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


2-1448453729
lamok
2015-11-25 15:15
2017.10.22
Подскажите как реализовать ввод текста





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский