Skip to content

Commit 5670c74

Browse files
author
Ulrike Kiesel
committed
fix(analysis): resolve SonarCloud quality gate failures for TSX support
1 parent b58b82b commit 5670c74

3 files changed

Lines changed: 18 additions & 2 deletions

File tree

analysis/analysers/parsers/UnifiedParser/src/main/kotlin/de/maibornwolff/codecharta/analysers/parsers/unified/metriccollectors/AvailableCollectors.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ package de.maibornwolff.codecharta.analysers.parsers.unified.metriccollectors
33
import de.maibornwolff.codecharta.serialization.FileExtension
44
import de.maibornwolff.treesitter.excavationsite.api.Language
55

6-
enum class AvailableCollectors(val fileExtension: FileExtension, val collectorFactory: () -> TreeSitterLibraryCollector) {
6+
/** Maps each supported [FileExtension] to a factory for the corresponding [TreeSitterLibraryCollector]. */
7+
enum class AvailableCollectors(
8+
/** The file extension this collector handles. */
9+
val fileExtension: FileExtension,
10+
/** Factory function that creates the collector for this language. */
11+
val collectorFactory: () -> TreeSitterLibraryCollector
12+
) {
713
TYPESCRIPT(FileExtension.TYPESCRIPT, { TreeSitterLibraryCollector(Language.TYPESCRIPT) }),
814
TSX(FileExtension.TSX, { TreeSitterLibraryCollector(Language.TSX) }),
915
JAVASCRIPT(FileExtension.JAVASCRIPT, { TreeSitterLibraryCollector(Language.JAVASCRIPT) }),

analysis/model/src/main/kotlin/de/maibornwolff/codecharta/serialization/FileExtension.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
package de.maibornwolff.codecharta.serialization
22

3-
enum class FileExtension(val primaryExtension: String, val otherValidExtensions: Set<String> = setOf()) {
3+
/** Canonical file extensions recognized by CodeCharta analysers. */
4+
enum class FileExtension(
5+
/** The primary extension string, including the leading dot (e.g. `".java"`). */
6+
val primaryExtension: String,
7+
/** Additional valid extensions for this language beyond the primary one. */
8+
val otherValidExtensions: Set<String> = setOf()
9+
) {
410
JSON(".json"),
511
CSV(".csv"),
612
CODECHARTA(".cc"),

analysis/model/src/main/kotlin/de/maibornwolff/codecharta/serialization/ProjectInputReader.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import java.io.InputStream
77
import java.io.InputStreamReader
88
import java.util.Scanner
99

10+
/** Reads and extracts serialized project JSON from an [java.io.InputStream], handling pipe-based input with sync signalling. */
1011
object ProjectInputReader {
1112
private const val MAX_WAIT_MS = 500L
1213
private const val CHECK_INTERVAL_MS = 50L
@@ -57,6 +58,7 @@ object ProjectInputReader {
5758
return content.replace(Regex("[\\n\\r]"), "")
5859
}
5960

61+
/** Returns `true` if the first 1024 bytes of [input] contain the ccsh sync flag, leaving the stream reset to its original position. */
6062
private fun containsSyncSignal(input: InputStream): Boolean {
6163
val bufferSize = 1024
6264
val buffer = ByteArray(bufferSize)
@@ -69,6 +71,7 @@ object ProjectInputReader {
6971
return isSubarray(syncSignalBytes, buffer)
7072
}
7173

74+
/** Extracts the last complete JSON object from [streamContent] by scanning backwards for a balanced `{}`pair, returning the full string if no valid object is found. */
7275
private fun extractJsonObjectFromEndOfStream(streamContent: String): String {
7376
var count = 0
7477
val openingBracket = '{'
@@ -97,6 +100,7 @@ object ProjectInputReader {
97100
}
98101
}
99102

103+
/** Returns `true` if [subarray] appears as a contiguous subsequence anywhere within [buffer]. */
100104
private fun isSubarray(subarray: ByteArray, buffer: ByteArray): Boolean {
101105
for (i in 0 until buffer.size - subarray.size + 1) {
102106
if (buffer.copyOfRange(i, i + subarray.size).contentEquals(subarray)) {

0 commit comments

Comments
 (0)