WatchDog is a plugin for Eclipse and IntelliJ IDEs that monitors how you test and debug, gives you helpful statistics on it and it respects your privacy (and your company's policy).

I want to install WatchDog for IntelliJ!

Start your IntelliJ IDEA (we support version 13 and up, both Ultimate and Community editions) and simply go to  File > Settings > Plugins. Choose  Browse repositories... and search for  WatchDog . Our  WatchDog plugin  will appear. Click  Install plugin  and select  Yes  to install WatchDog. Restart IntelliJ. That's it!

Alternatively, you can download our plugin from JetBrains Plugin Repository and choose  Install plugin from disk...

WatchDog silently runs in your IntelliJ. Its only trace: A small icon in the IntelliJ toolbar.

WatchDog in IntelliJ Plugin Repository:

I want to install WatchDog for Eclipse!

Fire up your Eclipse (we support 3.7, 3.8, 4.2, 4.3, 4.4, and 4.5) and simply drag the install button into your Eclipse

... or go to  Help > Install New Software. Add the WatchDog Update Site URL below behind  Work with:. Our  Test Roots Development Tools  will appear. Tick them and click  Next  to install WatchDog. Restart Eclipse. That's it.

WatchDog silently runs in your Eclipse. Its only trace: A small icon in the Eclipse toolbar.

WatchDog Eclipse Update Site:


WatchDog has been made by people with a passion for software for people with a passion for software. We know how annoying plugins and surveys can be. WatchDog runs silently in the background and you won't notice it's there.*

(* Except if you do, please file a bug report. )


How much do you test? Do you perhaps follow test-driven design, and didn't realise it? How many context-switches do you do per hour? How often do you run your tests? Does your production code co-evolve with your tests? Do you actually use the IDE-provided debugging infrastructure? What actions do you perform during a debugging session? The WatchDog plugin tells you. And only you.


WatchDog's privacy policy has been assessed and approved by the Human Research Ethics Committee of TU Delft.


Get instant statistics on your development behavior with our WatchDog Statistics View. In Eclipse the WatchDog View can be plugged into any place and it gives you a basic summary of your accumulated development behavior of the last hour.

To open the WatchDog view, open  Window  from the Eclipse menu and click  Show View > Other. Find the  WatchDog Statistics  view under the  Other  category (or, simply type WatchDog).

In IntelliJ it is integrated in the toolbar  Tool Buttons  (by default the right one) and you can open Statistic View by simply clicking on WatchDog icon.

Additionally, you (and only you!) can access a detailed report of your personal test practices, certified by TU Delft.

You'll receive a beautiful report on your personal development behaviour that helps you improve your coding abilities.

So you are already a perfect software engineer, you say? We'll tell you .

Access your personal WatchDog report.

You and your projects stay completely anonymous if you so want. We never transfer any content!

If you want to, you can share personal details such as the organization you work for (given permission by your employer) and your email address to receive personalized reports. By registering and installing WatchDog, you agree that we store your WatchDog data in a data center of TU Delft, The Netherlands, until further notice. We follow the principles of least information gathering, early anonymization and hashing. Only the WatchDog team has access to your raw data. An explanation of which data we gather precisely (including your IP address) follows below. By using WatchDog, you grant us the right that we can perform scientific research on your data, leading to written research papers that might include aggregated user data and graphs, and to release fully anonymized (that is, with no personally linked identifier such as user id, email, or IP address) versions of the submitted WatchDog data. By default, you grant us the right to store your data infinitely until revocation. To have your data removed, please simply contact us, supplying your user id.

Understanding how (much) developers test and debug.

The premise of TestRoots is to gain a deep understanding of how software is tested and debugged in the real world, and then suggest improvements based upon this thorough analysis. With WatchDog, we are interested in how you, as a Java developer, utilize the IDE and Junit. Not what you use it for. Hence, the data WatchDog measures is strictly numerical: We never transfer any content (not file names, and not even project names). You can trust us on this, we are nice people. Or read on, and discover what little data WatchDog, the unobtrusive, open-sourced Eclipse and IntelliJ plugins developed at TU Delft, really transfer.

I am a techie. Please, tell me what you transfer and how you transfer it. I'll make sense of it myself.

If transfering things over the internet is a problem for you or your company, we have a super-easy to setup virtual machine image. You can install this locally or on a server in your company. Please contact us in that case.

WatchDog centers around the concepts of intervals and events. Based on what event WatchDog receives from the IDE, it closes or creates a new interval or debug event. We have intervals for when you start your IDE, when you change focus to it, when you change your perspective, when you run Junit tests, when you launch the debugger and when you read or type code. When you read or type code, we see if we can figure out whether that's production or test code. When you type, we try to figure out how much code you changed in each typing interval (by calculating the Levensthein distance). That's all we do. So we will never see one letter that you type.

In addition, we have events for when you add, change or remove a breakpoint, when the program you are debugging is suspended or resumed, when you inspect or modify a variable value, when you perform a step into, over or out action and when you define a watch or evaluate an expression. The same holds for events as for intervals: we never see a letter you type.

Still not convinced? Alright, here's a JSON-ified TypingInterval (the most interesting one, really) as we transfer it to our server:

{ "endingDocument" : { "sloc" : 3, "dt" : "un" }, "diff" : 425, "doc" : { "sloc" : 31, "dt" : "un" }, "it" : "ty", "ts" : NumberLong("1408110488025"), "te" : NumberLong("1408110508039"), "ss" : NumberLong("-7490789694621659010"), "uid" : "935d7573c056c424f668d935ef18b4a0bf96c365", "pid" : "efdcb880844893f847d70907174315d95c50caa6" }

Events are transfered to the server in a similar fashion, as the following JSON-ified StepIntoEvent shows:

{"et" : "si", "ts" : 1460558102310, "ss" : "ZTEmoNvaBEiAsSHeinoHuzELVXbYNMaApKKkOecX", "wdv" : "1.7.0", "ide" : "ij"}

Let's Developer interviewed us