Существует ли инструмент для сбора статистики использования приложений Win32? [закрытый]

Никакие метрики относительно стиля кодирования не являются частью такого предупреждения.

Для меня это - [приблизительно 1 116] статический анализ кода , который может действительно быть 'на' все время:

я поместил бы тест покрытия во второй шаг, тесты как таковые могут занять время.

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

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

На заметке на полях, я действительно совместно использую Ваш разочарование ;), и я не совместно использую точку зрения tloach (в комментариях другого, отвечает), "Задайте неопределенный вопрос, получите неопределенный ответ", он говорит..., что Ваш вопрос заслуживает определенного ответа.

6
задан Jlouro 12 July 2009 в 21:58
поделиться

3 ответа

Я делал что-то подобное в прошлом.

Я могу придумать два способа сделать это.

С помощью действий:

При использовании действий очень легко отслеживать использование пользовательского интерфейса, помещая код в обработчик TActionList.OnExecute. Это событие запускается перед выполнением отдельного действия, что позволяет вам отслеживать, что и когда произошло.

Например:

procedure TForm1.ActionList1Execute(Action: TBasicAction; var Handled: Boolean);
begin
   WriteToLog(TAction(TBasicAction).Caption);
end;

Без действий:

Если вы не используете Действия, это становится немного сложнее, но не невозможно . Вы должны создать новый модуль с потомком TMenuItem с вашим кодом регистрации в нем. Обязательно поместите новый модуль после модуля MENU в разделе uses в каждом модуле, который его использует. Чтобы это работало, новый потомок должен называться TMenuItem. Поскольку вы, по сути, повторно вводите тот же класс, но с расширенной функциональностью.

Вот краткий блок, который я собрал, показывая очень простой пример.

unit MenuItemLogger;

interface

uses Menus;

Type
  TMenuItem = class(Menus.TMenuItem)
  public
    procedure Click; override;
  end;

implementation

uses windows;

{ TMenuItem }

procedure TMenuItem.Click;
begin
  outputdebugstring(PWideChar(self.Caption));
  inherited;
end;

end.

Чтобы использовать вышеуказанный блок, поместите его в качестве последнего блока в предложении uses любой формы / DataModule с меню (TMainMenu или TPopupMenu), которое вы хотите отслеживать. Если вы не хотите отслеживать конкретный объект, не включайте его.

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActnList, Menus, MenuItemLogger;

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

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActnList, Menus, MenuItemLogger;

Эти два метода просты и, хотя они работают, вероятно, не являются лучшими решениями.

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActnList, Menus, MenuItemLogger;

Эти два метода просты и, хотя они работают, вероятно, не являются лучшими решениями.

3
ответ дан 17 December 2019 в 20:34
поделиться

Полагаю, вы говорите о счетчиках производительности Windows

Взгляните на эту ссылку

Используйте системный монитор Windows (SYSMON), чтобы увидеть результат

взгляните на эту ссылку

Также есть Компоненты мониторинга производительности Prof для delphi

0
ответ дан 17 December 2019 в 20:34
поделиться

Вам нужен инструмент анализа покрытия ?

-1
ответ дан 17 December 2019 в 20:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: