Coverage Summary for Class: ProblemFinderContext (itmo.analyzer.analyze)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| ProblemFinderContext |
100%
(1/1)
|
75%
(3/4)
|
|
80%
(4/5)
|
82.8%
(24/29)
|
package itmo.analyzer.analyze
import com.github.javaparser.Position
import com.github.javaparser.ast.visitor.VoidVisitor
import com.github.javaparser.ast.visitor.VoidVisitorAdapter
import itmo.analyzer.Project
/**
* Entrypoint for analyzers.
*
* Heirs can register founded problems using [ProblemFinderContext].
*/
typealias ProblemFinder = VoidVisitor<ProblemFinderContext>
typealias ProblemFinderAdapter = VoidVisitorAdapter<ProblemFinderContext>
data class Problem(val position: Position, val message: String) {
val presentation: String
get() = "$position: $message"
}
/**
* Helper for problem collection. Provide some additional information like [Project]
*/
data class ProblemFinderContext(val project: Project) {
private val mutableProblems = mutableListOf<Problem>()
val problems: List<Problem> get() = mutableProblems
fun addProblem(position: Position, message: String) {
mutableProblems.add(Problem(position, message))
}
fun addProblem(problem: Problem) {
mutableProblems.add(problem)
}
}