public TasksParserResult invoke(final File workspace, final VirtualChannel channel) throws IOException, InterruptedException {
        String[] files = findFiles(workspace);

        TaskScanner taskScanner = new TaskScanner(high, normal, low, ignoreCase);
        TasksParserResult result = new TasksParserResult(files.length);
        ModuleDetector moduleDetector = createModuleDetector(workspace);
        log("Found " + files.length + " files to scan for tasks");
        for (String fileName : files) {
            try {
                File originalFile = new File(workspace, fileName);
                Collection<Task> tasks = taskScanner.scan(readFile(originalFile));
                if (!tasks.isEmpty()) {
                    String absolutePath = originalFile.getAbsolutePath();
                    String packageName = PackageDetectors.detectPackageName(absolutePath);
                    String guessedModule = moduleDetector.guessModuleName(absolutePath);
                    String actualModule = StringUtils.defaultIfEmpty(moduleName, guessedModule);

                    for (Task task : tasks) {
                        task.setFileName(absolutePath);
                        task.setPackageName(packageName);
                        task.setModuleName(actualModule);
                        task.setPathName(workspace.getPath());

                        ContextHashCode hashCode = new ContextHashCode();
                        task.setContextHashCode(hashCode.create(absolutePath, task.getPrimaryLineNumber(), defaultEncoding));
                    }

                    result.addAnnotations(tasks);
                }
            }
            catch (IOException exception) {
                // ignore files that could not be read
            }
            if (Thread.interrupted()) {
                throw new InterruptedException("Canceling scanning since build has been aborted.");
            }
        }
        result.addModule(moduleName);

        if (stringLogger != null) {
            result.setLog(stringLogger.toString());
        }

        return result;
    }
public TasksParserResult invoke ( final File workspace , final VirtualChannel channel ) throws IOException , InterruptedException { String [ ] files = findFiles ( workspace ) ; TaskScanner taskScanner = new TaskScanner ( high , normal , low , ignoreCase ) ; TasksParserResult result = new TasksParserResult ( files . length ) ; ModuleDetector moduleDetector = createModuleDetector ( workspace ) ; log ( "Found " + files . length + " files to scan for tasks" ) ; for ( String fileName : files ) { try { File originalFile = new File ( workspace , fileName ) ; Collection < Task > tasks = taskScanner . scan ( readFile ( originalFile ) ) ; if ( ! tasks . isEmpty ( ) ) { String absolutePath = originalFile . getAbsolutePath ( ) ; String packageName = PackageDetectors . detectPackageName ( absolutePath ) ; String guessedModule = moduleDetector . guessModuleName ( absolutePath ) ; String actualModule = StringUtils . defaultIfEmpty ( moduleName , guessedModule ) ; for ( Task task : tasks ) { task . setFileName ( absolutePath ) ; task . setPackageName ( packageName ) ; task . setModuleName ( actualModule ) ; task . setPathName ( workspace . getPath ( ) ) ; ContextHashCode hashCode = new ContextHashCode ( ) ; task . setContextHashCode ( hashCode . create ( absolutePath , task . getPrimaryLineNumber ( ) , defaultEncoding ) ) ; } result . addAnnotations ( tasks ) ; } } catch ( IOException exception ) { } if ( Thread . interrupted ( ) ) { throw new InterruptedException ( "Canceling scanning since build has been aborted." ) ; } } result . addModule ( moduleName ) ; if ( stringLogger != null ) { result . setLog ( stringLogger . toString ( ) ) ; } return result ; }
{@inheritDoc}