abstract class Reporter extends ZincReporter
A flexible reporter whose configuration is provided by a ReporterConfig
.
This configuration indicated whether to use colors, how to format messages,
etc.
A reporter has internal state and must be instantiated per compilation.
- Alphabetic
- By Inheritance
- Reporter
- ZincReporter
- ConfigurableReporter
- Reporter
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
Reporter(logger: Logger, cwd: AbsolutePath, config: ReporterConfig, _problems: Buffer[ProblemPerPhase] = mutable.ArrayBuffer.empty)
- logger
The logger that will receive the output of the reporter.
- cwd
The current working directory of the user who started compilation.
- config
The configuration for this reporter.
Abstract Value Members
-
abstract
def
printSummary(): Unit
- Definition Classes
- Reporter
-
abstract
def
reportCancelledCompilation(): Unit
Report the compile cancellation of this project.
Report the compile cancellation of this project.
- Definition Classes
- ZincReporter
-
abstract
def
reportCompilationProgress(progress: Long, total: Long): Unit
Report the progress from the compiler.
Report the progress from the compiler.
- Definition Classes
- ZincReporter
-
abstract
def
reportEndIncrementalCycle(durationMs: Long, result: Try[Unit]): Unit
A function called after every incremental cycle, even if any compilation errors happen.
A function called after every incremental cycle, even if any compilation errors happen. This method is not called if the compilation is a no-op (e.g. same analysis as before).
- durationMs
The time it took to complete the incremental compiler cycle.
- result
The result of the incremental cycle. We don't use
bsp.StatusCode
because the bloop backend, where this method is used, should not depend on bsp4j.
- Definition Classes
- ZincReporter
-
abstract
def
reportStartCompilation(previousProblems: List[ProblemPerPhase]): Unit
A function called *always* at the very beginning of compilation.
A function called *always* at the very beginning of compilation.
- Definition Classes
- ZincReporter
-
abstract
def
reportStartIncrementalCycle(sources: Seq[File], outputDirs: Seq[File]): Unit
A function called before every incremental cycle with the compilation inputs.
A function called before every incremental cycle with the compilation inputs. This method is not called if the compilation is a no-op (e.g. same analysis as before).
- Definition Classes
- ZincReporter
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val _problems: Buffer[ProblemPerPhase]
-
def
allProblems: Seq[Problem]
All the
Problems
seen by this reporter.All the
Problems
seen by this reporter.- Definition Classes
- Reporter → ConfigurableReporter
-
def
allProblemsPerPhase: Seq[ProblemPerPhase]
- Definition Classes
- Reporter → ZincReporter
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
def
comment(pos: Position, msg: String): Unit
- Definition Classes
- Reporter → Reporter
-
val
config: ReporterConfig
The configuration for this reporter.
The configuration for this reporter.
- Definition Classes
- Reporter → ConfigurableReporter
-
val
cwd: AbsolutePath
The current working directory of the user who started compilation.
The current working directory of the user who started compilation.
- Definition Classes
- Reporter → ConfigurableReporter
-
def
enableFatalWarnings(): Unit
Enables internal bloop implementation of fatal warnings.
Enables internal bloop implementation of fatal warnings.
Having fatal warnings implemented inside the compiler has several drawbacks:
1. Bloop receives a failed compilation when there is a warning. A failed compilation doesn't allow us to cache the work done during an incremental compiler cycle and the compilation products generated are thrown away. This means next time we compile we need to redo the work of compiling all changed source files when we would only want to recompile the files that produced a fatal warning.
2. When warnings are produced, Metals doesn't have access to the class files generated by the failed compilation. This affects negatively the editing experience in the editor.
To work around these limitations, we remove
-Xfatal-warnings
from the scalac options passed to the compiler and we implement fatal warnings ourselves in our reporter implementation.Our implementation promotes warnings to errors just before we're going to report them but still represents warnings as warnings in the analysis file. At the same time, it also treats successful compilations with fatal warnings as errors at the very end of the compilation pipeline, after all the compilation passes have been done in a build graph, and guarantees that it works for clients that have their compilations deduplicated.
All in all, implementing fatal warnings reproduces the previous behavior in the compiler but without the inconveniences of handling compilation results as failures when only fatal warnings are solely responsible for the failed result.
- Definition Classes
- Reporter → ZincReporter
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
val
filesToPhaseStack: TrieMap[File, List[String]]
- Attributes
- protected
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
getSourceFilesWithFatalWarnings: Set[File]
Tells the caller which source files have fatal warnings so that Bloop can mark them as changed and get recompiled in the next incremental cycle.
Tells the caller which source files have fatal warnings so that Bloop can mark them as changed and get recompiled in the next incremental cycle.
- Definition Classes
- Reporter → ZincReporter
-
def
hasErrors(): Boolean
true
if this reporter has received errors,false
otherwise.true
if this reporter has received errors,false
otherwise.- Definition Classes
- Reporter → ConfigurableReporter → Reporter
-
def
hasWarnings(): Boolean
true
if this reporter has received warnings,false
otherwise.true
if this reporter has received warnings,false
otherwise.- Definition Classes
- Reporter → ConfigurableReporter → Reporter
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
liftFatalWarning(problem: Problem): Problem
- Attributes
- protected
-
def
liftProblem(p: xsbti.Problem): Problem
- Attributes
- protected
-
def
log(xproblem: xsbti.Problem): Unit
- Definition Classes
- Reporter → Reporter
- val logger: Logger
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
val
phasesAtFile: TrieMap[File, String]
- Attributes
- protected
-
def
problems(): Array[xsbti.Problem]
- Definition Classes
- Reporter → Reporter
-
def
reportEndCompilation(previousSuccessfulProblems: List[ProblemPerPhase], code: StatusCode): Unit
A function called at the very end of compilation, before returning from Zinc to bloop.
A function called at the very end of compilation, before returning from Zinc to bloop. This method **is** called if the compilation is a no-op.
- code
The status code for a given compilation. The status code can be used whenever there is a noop compile and it's successful or cancelled.
- Definition Classes
- Reporter → ZincReporter
-
def
reportNextPhase(phase: String, sourceFile: File): Unit
Report when the compiler enters in a phase.
Report when the compiler enters in a phase.
- Definition Classes
- Reporter → ZincReporter
-
def
reset(): Unit
- Definition Classes
- Reporter → Reporter
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )