Browse Source

Fix stacktrace in the Json output

pull/3361/head
Julien HENRY 3 weeks ago
parent
commit
6e33df0cc2

+ 6
- 0
sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerLogbackEncoder.java View File

@@ -24,6 +24,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.IThrowableProxy;
import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.encoder.EncoderBase;
import java.util.List;
import org.apache.commons.text.StringEscapeUtils;

import static ch.qos.logback.core.CoreConstants.COMMA_CHAR;
@@ -41,6 +42,11 @@ public class ScannerLogbackEncoder extends EncoderBase<ILoggingEvent> {

private final ThrowableProxyConverter tpc = new ThrowableProxyConverter();

public ScannerLogbackEncoder() {
tpc.setOptionList(List.of("full"));
tpc.start();
}

@Override
public byte[] headerBytes() {
return EMPTY_BYTES;

+ 6
- 4
sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/ScannerLogbackEncoderTest.java View File

@@ -30,9 +30,9 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

class ScannerLogbackEncoderTest {
ScannerLogbackEncoder underTest = new ScannerLogbackEncoder();
@Test
void no_headers_and_footers() {
assertThat(underTest.headerBytes()).isEmpty();
@@ -70,7 +70,9 @@ class ScannerLogbackEncoderTest {

var bytes = underTest.encode(logEvent);

assertThat(new String(bytes, StandardCharsets.UTF_8)).isEqualTo("{\"level\":\"DEBUG\",\"message\":\"message\",\"stacktrace\":\"java.lang.IllegalArgumentException: foo\\n\"}\n");
assertThat(new String(bytes, StandardCharsets.UTF_8))
.startsWith(
"{\"level\":\"DEBUG\",\"message\":\"message\",\"stacktrace\":\"java.lang.IllegalArgumentException: foo\\n\\tat org.sonar.scanner.bootstrap.ScannerLogbackEncoderTest.should_encode_with_stacktrace");
}

}
}

Loading…
Cancel
Save