docs: function (callback) {
                              var extension = (/^win/.test(process.platform) ? '.bat' : '');
                              var opts = {
                                  cmd: 'sonar-runner' + extension,
                                  args: buildArgs(sonarOptions, data),
                                  opts: {
                                      stdio: 'inherit'
                                  }
                              };
  
                              var libDir = path.join(__dirname, '..', 'lib');
                              if (grunt.file.exists(libDir)) {
  
                                  glob.sync('**/bin/sonar-runner' + extension, {
                                      cwd: libDir,
                                      root: '/'
                                  }).forEach(function (file) {
                                      opts.cmd = libDir + path.sep + file;
                                  });
                              }
  
                              // Add custom properties
                              if (sonarOptions.runnerProperties) {
                                  Object.keys(sonarOptions.runnerProperties).forEach(function (prop) {
                                      opts.args.push('-D' + prop + '=' + sonarOptions.runnerProperties[prop]);
                                  });
                              }
  
                              // enable debug
                              if (sonarOptions.debug) {
                                  opts.args.push('-X');
                              }
  
                              if (!sonarOptions.dryRun) {
                                  if (sonarOptions.debug) {
                                      logArguments('Sonar will run with the following sonar properties:', opts);
                                  }
                                  grunt.util.spawn(opts, function (error, result, code) {
                                      if (code !== 0) {
                                          return grunt.warn('The following error occured while trying to upload to sonar: ' + error);
                                      } else {
                                          grunt.log.writeln('Uploaded information to sonar.');
                                      }
                                      callback(null, 200);
                                  });
                              } else {
                                  grunt.log.subhead('Dry-run');
                                  logArguments('Sonar would have been triggered with the following sonar properties:', opts);
                                  callback(null, 200);
                              }
                          }