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

Вниз

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

 
Cobalt ©   (2015-05-25 13:05) [160]

> Дмитрий Белькевич ©   (20.05.15 12:36) [158]
>
> >Некрасиво, конечно, но если нормального способа не предусмотрено,  то ничего другого не остается.
>
> Я у себя делал специальный таймер TThreadTimer - работающий
> в параллельном потоке и вызывающий код в параллельном потоке,
>  добавил методы Start, Stop и Restart. Почему что-то такое
> не добавить в VCL/FMX? Неудобно же как есть.

Мне кажется, не стоит нагружать Embarcadero вещами, которые может сделать каждый программист. Они со своими-то не справляются. А им это ещё поддерживать для разных платформ...


 
q1w2e ©   (2015-05-26 14:09) [161]


> Kerk ©   (23.05.15 13:42) [159]
> Директивы компиляции в командной строке можно указывать
> с помощью параметра --defines
> А написано про это в документации :)

Ну конечно, я это пробовал. Легче не стало. Директивы компиляции по какой-то причине у меня игнорируются, происходит парсинг всего текста модуля.

Вот коротенький пример для иллюстрации:

{$I Definitions.inc}
unit Test;

{$IFNDEF TEST}
deprecated; // этот модуль предназначен только для тестовых сборок
{$ENDIF}

interface
implementation
end.


Содержимое Definitions.inc:

{$IFDEF TEST_1.DPR}
 {$DEFINE TEST}
{$ENDIF}


 
Kerk ©   (2015-05-26 14:52) [162]

Покажи что в командной строке пишешь.
А инклуды пока не поддерживаются, к сожалению.


 
q1w2e ©   (2015-05-26 15:53) [163]

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

Однако, эксперимента ради я могу указать и впрямую этот символ в параметрах командной строки:

FixInsightCL.exe --project=TEST_1.DPR --defines=TEST_1.DPR


Если, как Вы пишите,  включения не поддерживаются, то все равно работать, видимо, не будет.


 
q1w2e ©   (2015-05-26 15:59) [164]

При работе с командной строкой можно ли как-то ограничить множество выполняемых проверок, например, перечислив их в какой-нибудь секции настроечного файла (.ficfg ?)? Где об этом почитать?


 
q1w2e ©   (2015-06-01 16:18) [165]

Было бы здорово разделить W504 на отдельно пропущенный inherited в конструкторе и деструкторе. Дело в том, что часто предупреждение в конструкторах ложное, так как имеется несколько перегруженных конструктуров, конструктор предка зовется лишь в одном, а остальные зовут этот первый. Например:

type
 TValue = class
   constructor Create; overload;
   constructor Create(const AValue: Integer); overload;
   constructor Create(const AValue: string); overload;
 end;


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


 
Kerk ©   (2015-06-01 16:26) [166]


>  q1w2e ©   (26.05.15 15:59) [164]
>
> При работе с командной строкой можно ли как-то ограничить
> множество выполняемых проверок, например, перечислив их
> в какой-нибудь секции настроечного файла (.ficfg ?)? Где
> об этом почитать?

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


 
Kerk ©   (2015-06-01 16:27) [167]


> q1w2e ©   (01.06.15 16:18) [165]
>
> Было бы здорово разделить W504 на отдельно пропущенный inherited
> в конструкторе и деструкторе. Дело в том, что часто предупреждение
> в конструкторах ложное, так как имеется несколько перегруженных
> конструктуров, конструктор предка зовется лишь в одном,
> а остальные зовут этот первый.

Это уже сделано в следующей версии, которая пока не вышла. Думаю, в июне она появится на сайте.


 
q1w2e ©   (2015-06-01 17:15) [168]

К сожалению, работаю в delphi 5


 
q1w2e ©   (2015-06-01 17:27) [169]

Если еще интересуют идеи по отлову багов, то решусь предложить такой частый баг копипаста

if Assigned(P) then
 Exit;
P.DoSomething;


ну или симметричный:


if P = nil then
 P.DoSomething;


Можно попробовать отловить такие обезниливания указателей хотя бы в простейших случаях.


 
Kerk ©   (2015-06-01 20:30) [170]

Вот так файл .ficfg выглядит для текущей версии (2015.04)
http://pastebin.com/CNa89vdn

Сохрани куда-нибудь. Отредактируй значения руками, там вроде очевидно что как.


 
q1w2e ©   (2015-06-02 15:54) [171]

Спасибо. С cfg- все ясно.

1. Ошибка W521 иногда шумит:


 function GenerateTempFileName(const Dir: string): string;
 var
   I: Integer;
 begin
   for I := 0 to 65535 do
   begin
     Result := AddBk(Dir) + Format("~tmp%d.dbf", [I]);
     if not FileExists(Result) then
       Exit;
   end;
 end;


2. Хороша была бы подсказка о неиспользованных параметрах, передаваемых в процедуру, но только при условии, что можно ее включать/выключать раздельно:
- для вложенных процедур;
- для процедур и функций глобальных для модуля (область видимости implementation);
- для процедур и функций глобальных для программы (область видимости interface);
- для конструкторов / деструкторов;
- для виртуальных и динамических методов;
- для методов-обработчиков событий объектов VCL;
- для методов-обработчиков событий Windows;
- для методов объектов с видимостью published;
- для остальных методов.


 
q1w2e ©   (2015-06-03 11:13) [172]

Можно еще предложения?

Если да, то было бы здорово ловить getеter-ы и setter-ы свойств, которые опрокидывают программу в рекурсию.


procedure TMyClass.SetMyProperty(const Value: TMyType);
begin
 if MyProperty <> Value then
   MyProperty := Value; { упс }
end;


 
Kerk ©   (2015-08-25 12:31) [173]

Незаметно подкралась новая версия. 2015.08. Сделана полноценная поддержка директивы $INCLUDE. Анализируются теперь не только файлы напрямую включенные в проект, но и используемые файлы из search path (отключаемо).

Плюс пара новых правил. Вот такое, например. W526 Pointer to a nested method

      procedure TMyClass.DoWork;

        procedure NestedMethod(List: TObjectList);
        var
          I: Integer;
        begin
          for I := 0 to List.Count - 1 do
            Foo(Self, List[I]);
        end;

      begin
        SetCallback(@NestedMethod); // <------
      end;


Скачивать все там же :)
http://sourceoddity.com/fixinsight/download.html


 
DayGaykin ©   (2015-08-25 13:25) [174]

На правах предложений:
Меня очень порадовало в Intellij Idea следующее предупреждение:
""scrollLeft" should probably not be assigned to "top""
на код:
var top = document.scrollLeft;


 
DVM ©   (2015-08-25 13:30) [175]


> Kerk ©   (25.08.15 12:31) [173]

Предложение: добавить в анализатор отслеживание ситуаций, когда адрес приводится к 4-байтовому целому. Полезно при переносе 32 бит кода в 64.


 
Игорь Шевченко ©   (2015-08-25 16:16) [176]

DVM ©   (25.08.15 13:30) [175]


> Полезно при переносе 32 бит кода в 64.


А что, регулярный процесс ? Просто интересно


 
DVM ©   (2015-08-25 16:33) [177]


> Игорь Шевченко ©   (25.08.15 16:16) [176]


> А что, регулярный процесс ? Просто интересно

Ну мне частенько такое встречалось (в последнее время правда реже, все что надо уже перенесено на 64 бит).


 
DVM ©   (2015-08-25 16:39) [178]


> Игорь Шевченко ©

Да и безотносительно регулярности, ну ведь ошибка это явная, как в с++ использование int вместо size_t:

http://www.viva64.com/ru/a/0050/)


 
Rouse_ ©   (2015-08-25 18:09) [179]


> Игорь Шевченко ©   (25.08.15 16:16) [176]
> А что, регулярный процесс ? Просто интересно

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


 
Rouse_ ©   (2015-08-25 18:14) [180]


> Kerk ©   (25.08.15 12:31) [173]

static постфикс у Nested процедур/функций обрабатываешь?


 
Kerk ©   (2015-08-25 18:18) [181]

Это что такое?


 
Rouse_ ©   (2015-08-25 18:42) [182]


> Kerk ©   (25.08.15 18:18) [181]
> Это что такое?

Self отключается. Кстати ты почаще в аську выходи бо к примеру несколько дней мне нужна твоя помощь, а я не знаю как до тебя проще достучаться :)


 
Kerk ©   (2015-08-25 19:28) [183]

Не, такое пока не учитывается.

Я всегда есть в скайпе roman_yankovsky
Или джаббере roman@yankovsky.me
Плюс почта конечно же

Сейчас попробую аську включить. Но там я редко.


 
Rouse_ ©   (2015-08-25 19:32) [184]


> Kerk ©   (25.08.15 19:28) [183]
> Не, такое пока не учитывается.
>
> Я всегда есть в скайпе roman_yankovsky
> Или джаббере roman@yankovsky.me
> Плюс почта конечно же
>
> Сейчас попробую аську включить. Но там я редко.

не, аську не надо, если в скайпе - завтра подключусь.


 
virex(home) ©   (2015-11-26 08:11) [185]


> Kerk ©   (30.04.15 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/

With the FixInsight trial version you may run any analysis, as in the full version, but some limitations apply: the trial reports no more than five messages per unit, and the option to exclude a list of units from analysis is disabled.

теперь понятно почему в консоли не работает
скачал новую версию, а тут такое


 
Limpo ©   (2015-11-26 14:35) [186]

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


 
DayGaykin ©   (2015-11-26 14:52) [187]

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


 
DayGaykin ©   (2015-11-26 14:53) [188]

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


 
Kerk ©   (2015-11-26 19:23) [189]


> virex(home) ©   (26.11.15 08:11) [185]

Ну так это всегда так было :)


 
virex(home) ©   (2015-11-27 08:38) [190]

порадовал вывод консольной утилиты
File: c:\..\.......pas
 Fatal parser error (17, 1)


ошибка в 17 строке

оказалось в uses было две запятые
возможно удаляли "лишние" библиотеки какой-нибудь утилитой и получилось чтото вроде
uses StrUtils,Windows,,Classes...


 
Kerk ©   (2015-11-27 11:17) [191]

А как оно компилировалось? :)


 
virex(home) ©   (2015-11-27 11:38) [192]


> А как оно компилировалось? :)

никак

это было в одном из проектов, в настоящее время не использущийся модуль

з.ы. вообще это ПО которое я "поддерживаю" работает примерно с 2002 года, уже несколько лет его пытаются заменить на что-то другое
этакий "мастдай", как delphi которая вот вот прекратит свое существование
была попытка перенести всю функциональность в SAP, теперь думают об 1С
но столько человекочасов вложенных в это ПО, столько логики нереально мигрировать в другие программные решения быстро и уж темболее бесплатно
поэтому пока так


 
Kerk ©   (2015-11-27 17:54) [193]

Новая серия сериала "Свой код никому не показывай, чужой критикуй" :)
http://sourceoddity.com/blog/2015/11/fixinsight-vs-fmx-in-delphi-10-seattle/


 
Германн ©   (2015-11-28 02:35) [194]


> Kerk ©   (27.11.15 17:54) [193]
>
> Новая серия сериала

Была у меня как-то мысля попробовать ради собственного интереса сделать что-то на FMX. Но как-то сразу интерес пропал. :(


 
Kerk ©   (2015-11-28 18:19) [195]

Ну там не так все плохо, как может показаться. У нас есть одно приложение на FMX. Полет вполне нормальный.


 
Eraser ©   (2015-11-28 20:25) [196]

Да, сейчас - это уже не то, что было в XE2, качество лучше.


 
Германн ©   (2015-11-29 01:52) [197]


> Eraser ©   (28.11.15 20:25) [196]
>
> Да, сейчас - это уже не то, что было в XE2, качество лучше.
>
>  

Я пробовал в ХЕ5. Качество было очень сырое.


 
Eraser ©   (2015-11-29 04:32) [198]

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


> Kerk ©   (28.11.15 18:19) [195]

вот, кстати, давно хотел спросить, не собираются ли делать ARC версию компилятора под Mac OS? Сейчас получается, что это и не VCL и не FMX в полной мере, стиль кода ARC там использовать нельзя, или я что-то путаю?


 
Kerk ©   (2015-11-29 23:58) [199]

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

Мне вообще этот ARC не нравится. Просто потому, что поломали переносимость кода между платформами. Было бы лучше везде одинаково работать. И строки индексируемые с нуля такая же глупость.


 
Германн ©   (2015-12-01 01:43) [200]


> Eraser ©   (29.11.15 04:32) [198]
>
> и не XE5 )
> там достаточно взглянуть на список исправленных багов от
> каждой новой версии, каждый раз удивляюсь, как оно вообще
> раньше работало. на данный момент детские болезни они почти
> побороли.
>

А не детские болезни когда лечить начнут?



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

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

Наверх




Память: 0.83 MB
Время: 0.024 c
2-1448453729
lamok
2015-11-25 15:15
2017.10.22
Подскажите как реализовать ввод текста


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


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