fix(android): detekt -- parseHhMmSs ReturnCount/MagicNumber + readUntilEndTag jumps
android / Build + lint + test (push) Failing after 3m5s

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-03 20:45:00 -04:00
parent 96594ba52b
commit 8fe3308afd
2 changed files with 28 additions and 17 deletions
@@ -184,11 +184,13 @@ class AVTransportClient(
} }
private fun parseHhMmSs(raw: String): Long { private fun parseHhMmSs(raw: String): Long {
if (raw.isBlank()) return 0L
val parts = raw.split(':').mapNotNull { it.trim().toLongOrNull() } val parts = raw.split(':').mapNotNull { it.trim().toLongOrNull() }
if (parts.size != 3) return 0L return if (parts.size == EXPECTED_HMS_PARTS) {
val (h, m, s) = parts val (h, m, s) = parts
return ((h * SECONDS_PER_HOUR) + (m * SECONDS_PER_MINUTE) + s) * MILLIS_PER_SECOND ((h * SECONDS_PER_HOUR) + (m * SECONDS_PER_MINUTE) + s) * MILLIS_PER_SECOND
} else {
0L
}
} }
private companion object { private companion object {
@@ -196,6 +198,7 @@ class AVTransportClient(
const val MILLIS_PER_SECOND = 1000L const val MILLIS_PER_SECOND = 1000L
const val SECONDS_PER_MINUTE = 60L const val SECONDS_PER_MINUTE = 60L
const val SECONDS_PER_HOUR = 3600L const val SECONDS_PER_HOUR = 3600L
const val EXPECTED_HMS_PARTS = 3
} }
} }
@@ -127,33 +127,41 @@ class SoapClient(
private fun readUntilEndTag(parser: XmlPullParser, tagName: String): String { private fun readUntilEndTag(parser: XmlPullParser, tagName: String): String {
val sb = StringBuilder() val sb = StringBuilder()
var depth = 1 var depth = 1
while (depth > 0) { var done = false
while (!done && depth > 0) {
when (parser.next()) { when (parser.next()) {
XmlPullParser.START_TAG -> { XmlPullParser.START_TAG -> {
sb.append('<').append(parser.name) appendStartTag(sb, parser)
for (i in 0 until parser.attributeCount) {
sb.append(' ')
.append(parser.getAttributeName(i))
.append("=\"")
.append(parser.getAttributeValue(i))
.append('"')
}
sb.append('>')
depth += 1 depth += 1
} }
XmlPullParser.END_TAG -> { XmlPullParser.END_TAG -> {
depth -= 1 depth -= 1
if (depth == 0 && parser.name == tagName) break if (depth == 0 && parser.name == tagName) {
sb.append("</").append(parser.name).append('>') done = true
} else {
sb.append("</").append(parser.name).append('>')
}
} }
XmlPullParser.TEXT -> sb.append(parser.text.orEmpty()) XmlPullParser.TEXT -> sb.append(parser.text.orEmpty())
XmlPullParser.END_DOCUMENT -> break XmlPullParser.END_DOCUMENT -> done = true
else -> Unit else -> Unit
} }
} }
return sb.toString() return sb.toString()
} }
private fun appendStartTag(sb: StringBuilder, parser: XmlPullParser) {
sb.append('<').append(parser.name)
for (i in 0 until parser.attributeCount) {
sb.append(' ')
.append(parser.getAttributeName(i))
.append("=\"")
.append(parser.getAttributeValue(i))
.append('"')
}
sb.append('>')
}
private fun faultCodeOf(body: String): String = private fun faultCodeOf(body: String): String =
extractBetween(body, "<errorCode>", "</errorCode>") ?: "unknown" extractBetween(body, "<errorCode>", "</errorCode>") ?: "unknown"