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.


To reward you and to give you extra incentive to install WatchDog (and to keep it installed), we are constantly raffling off awesome, geeky prizes: At the moment, it's Amazon vouchers!


We are now raffling off an Android tablet, a mechanical keyboard, and (in case your office mate won them) noise-cancellation headphones! To participate in the lottery this year, you have to register WatchDog with your email address, and record at least one workspace for one full working day (eight hours).

On March 23rd 2015, we announced the first winners of our ultra-handy Nexus Android Tablet from Google, a mechanical keyboard from Cherry, and the noise-cancelation headphones from Panasonic. Congratulations! Didn't get an email? Just continue using WatchDog, and you are partaking in the next lottery!

Free shipping of the prizes. Only one prize per participant. Legal recourse is excluded, and the jury's decision is final.


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. We never transfer any content!

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