in plugin-dotnet-agent/src/main/kotlin/jetbrains/buildServer/inspect/DupFinderCodeDataProcessor.kt [20:76]
override fun processData(context: DataProcessorContext) {
_reporter.startDuplicates()
try {
_fileSystem.read(context.file) {
var cost: Int? = null
var fragment: Fragment? = null
var fragments = mutableListOf<Fragment>()
var hashes = mutableSetOf<Int>()
var duplicates = mutableListOf<DuplicateInfo>()
for (e in _xmlReader.read(it)) {
when (e.name.lowercase()) {
"duplicate" -> {
tryCreateDuplicate(cost, fragments, hashes)?.let {
duplicates.add(it)
publish(duplicates, false)
}
fragments = mutableListOf()
cost = e["Cost"]?.toIntOrNull()
}
"fragment" -> {
fragment = Fragment()
fragments.add(fragment)
}
"filename" -> {
fragment?.let {
it.fileName = e.value
}
}
"linerange" -> {
fragment?.let {
it.lineRangeStart = e["Start"]?.toIntOrNull() ?: -1
it.lineRangeEnd = e["End"]?.toIntOrNull() ?: -1
}
}
"text" -> {
fragment?.let {
it.text = e.value
}
}
}
}
tryCreateDuplicate(cost, fragments, hashes)?.let { duplicates.add(it) }
publish(duplicates, true)
}
}
finally {
_reporter.finishDuplicates()
}
}