ProductPromotion
Logo

Kotlin

made by https://0x3d.site

GitHub - dkandalov/activity-tracker: Plugin for IntelliJ IDEs to track and record user activity
Plugin for IntelliJ IDEs to track and record user activity - dkandalov/activity-tracker
Visit Site

GitHub - dkandalov/activity-tracker: Plugin for IntelliJ IDEs to track and record user activity

GitHub - dkandalov/activity-tracker: Plugin for IntelliJ IDEs to track and record user activity

Build Status

Activity Tracker

This is a proof-of-concept plugin for IntelliJ IDEs to track and record user activity. Currently, the main feature is recording user activity into CSV files.

To install the plugin use IDE Settings -> Plugins -> Marketplace -> Search for "Activity Tracker".

To use the plugin see the "Activity tracker" widget in the IDE status bar.

Why?

The main idea is to mine recorded data for interesting user or project-specific insights, e.g. time spent in each part of the project or editing/browsing ratio. If you use the plugin and find an interesting way to analyze the data, feel free to get in touch on Mastodon, Twitter or GitHub.

Help

To open plugin popup menu:

  • click on the "Activity tracker" widget in the IDE status bar or
  • use the "Activity Tracker Popup" action (ctrl+alt+shift+O shortcut)

Popup menu actions

  • Start/Stop Tracking - activate/deactivate recording of IDE events. Events are written to ide-events.csv file. This file is referred to as the "current log".
  • Current Log
    • Show Stats - analyse the current log and open the tool window which shows time spent editing each file.
    • Open in IDE - open the current log file in IDE editor.
    • Open in File Manager - open the current log in file manager (can be useful to navigate to log file location path).
    • Roll Tracking Log - rename the current log file by adding date postfix to it. The intention is to keep previous data and clear the current log.
    • Clear Tracking Log - remove all data from the current log.
  • Settings
    • Track IDE Action - enable capturing IDE actions.
    • Poll IDE State - enable polling IDE state (every 1 second) even if there is no activity. Enable this option to get more accurate data about time spent in/outside of IDE.
    • Track Keyboard - enable tracking keyboard events. Beware! If you enter sensitive information (like passwords), it might be captured and stored in the current log file.
    • Track Mouse - enable tracking mouse click events. Note that because of the high volume of mouse move and wheel events, they are logged at most every 250 milliseconds.

Log file format

The event log file is written as CSV RFC4180 in UTF-8 encoding.

  • timestamp - time of the event in yyyy-MM-dd'T'HHmmss.SSSZ format (see createDateTimePrintFormat() method). In plugin version 0.1.3 it was ISO-8601 extended format. In plugin version 0.1.2 it was yyyy/MM/dd kk:mm:ss.SSS format.
  • user name - current user name. The intention is to be able to merge logs from several users.
  • event type, event data - content depends on the type of captured event.
    • IDE actions: event type = Action, event data = [action id] (e.g. Action,EditorUp); or event type = VcsAction, event data = [Push|Update|Commit]; or event type = CompilationFinished, event data = [amount of errors during compilation].

    • Executions: event type = Execution, event data = [Run|Debug|Coverage]:[Run configuration name]:[full commandline instruction].

    • IDE polling events: event type = IdeState, event data = [Active|Inactive|NoProject], where Inactive means IDE doesn't have focus, NoProject means all projects are closed.

    • keyboard events: event type = KeyEvent, event data = [eventId]:[keyChar]:[keyCode]:[modifiers] (see AWT KeyEvent).

    • mouse events: event type = MouseEvent, event data can be

      • click:[button]:[clickCount]:[modifiers]
      • move:[x]:[y]:[modifiers]
      • wheel:[wheelRotation]:[wheelModifiers]

      (see java MouseEvent and MouseWheelEvent for details).

  • project name - the name of the active project.
  • focused component - can be Editor, Dialog, Popup, or tool window id (e.g. Version Control or Project).
  • current file - absolute path to file open in the editor (even when the editor has no focus).
  • PSI path - PSI path to currently selected element, format [parent]::[child]. Empty value if the file was not parsed by IDE (e.g. plain text file).
  • editor line - caret line number in Editor.
  • editor column - caret column number in Editor.
  • task/change list name - the name of the current task (Main Menu -> Tools -> Tasks & Contexts) or current VCS change list name if the "Task Management" plugin is not installed.

Example of log file

2015-12-31T17:42:30.171Z,dima,IdeState,Active,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,8,
2015-12-31T17:42:30.35Z,dima,Action,EditorLineEnd,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,8,
2015-12-31T17:42:30.351Z,dima,KeyEvent,401:97:79:8,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,24,
2015-12-31T17:42:30.566Z,dima,Action,EditorLineStart,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,24,
2015-12-31T17:42:30.568Z,dima,KeyEvent,401:97:85:8,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,8,
2015-12-31T17:42:30.998Z,dima,KeyEvent,401:65535:157:4,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,8,
2015-12-31T17:42:31.17Z,dima,IdeState,Active,activity-tracker,Editor,/path/to/jdk/src.zip!/java/awt/AWTEvent.java,AWTEvent::isConsumed,450,8,
2015-12-31T17:42:32.169Z,dima,IdeState,Inactive,,,,,-1,-1,
2015-12-31T17:42:33.168Z,dima,IdeState,Inactive,,,,,-1,-1,

How to use log file?

This is up to you.

Contributing

The most interesting part is the analysis of the recorded data. All suggestions and code are welcome (even if it's not a JVM language, e.g. a Python snippet). If you have a question, feel free to create an issue.

Working on the plugin:

  • to edit code, open project in IJ IDEA importing Gradle configuration
  • to build use ./gradlew buildPlugin task which will create build/distributions/activity-tracker-plugin.zip
  • to run use ./gradlew runIde task
  • alternatively, you can use LivePlugin as an entry point.

More Resources
to explore the angular.

mail [email protected] to add your project or resources here 🔥.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory