A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/pmd/pmd/issues/3828 below:

GitHub ยท Where software is built

Is your feature request related to a problem? Please describe.
It would be nice for the CLI to report progress in real time. Something like a progress bar filling up and a number of violations updated live.

Describe the solution you'd like
I think this can be built into an analysis listener in PMD 7 and performed transparently. Note that implementing this will also require implementing a way to disable it, eg with a --batch-mode flag. CI runs for instance will probably not want to report progress.

Describe alternatives you've considered
Just logging processed file names in real time is good for a log file, but too verbose for an end-user. See #3816

Additional context
IDE integrations would probably want a way to check progress and also cancel the PMD run. Eg in the Intellij API there is this interface IIRC

interface ProgressIndicator {
   boolean isCancelled();
   // other methods to eg set current progress percentage
}

which is checked regularly to abort the current tasks if it was cancelled. I don't think we actually need to include and publish such an API, as it would be easy to implement the same functionality with a listener:

class MyCancelListener implements GlobalAnalysisListener {
    ProgressIndicator indicator;
   
    FileAnalysisListener startFileAnalysis(TextFile file) {
        if (indicator.isCancelled()) throw new AnalysisAbortedError();
        return FileAnalysisListener.noop();
    }

   static class AnalysisAbortedError extends Error { }
}

and catch the error above where you call PMD. Same for live progress reporting, it's very easy to build a listener that will get events when there's a new violation or new file being processed and update a progress bar in an IDE control. For our CLI, we need to avoid interleaving error messages with the progress bar though, so some first-class support in our MessageReporter (#3822) may be necessary.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4