Skip to content

Append the `--verbose` flag to Semgrep when SECURE_LOG_LEVEL=debug

James Liu requested to merge jliu-verbose-logging into main

What does this MR do?

Here's a sample of the new debug logs:
❯ SECURE_LOG_LEVEL=debug analyzer-run ../../tests/pyspark
image: semgrep:jliu-verbose-logging
[INFO] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/command.go:76] ▶ GitLab Semgrep analyzer v3.11.2
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ ANALYZER_TARGET_DIR,CI_PROJECT_DIR=/tmp/app
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ ANALYZER_ARTIFACT_DIR,CI_PROJECT_DIR=/tmp/app
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ ANALYZER_INDENT_REPORT=false
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ ANALYZER_OPTIMIZE_REPORT=true
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ ADDITIONAL_CA_CERT_BUNDLE=
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ SEARCH_IGNORED_DIRS=bundle,node_modules,vendor,tmp,test,tests
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ SEARCH_IGNORE_HIDDEN_DIRS=true
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ SEARCH_MAX_DEPTH=2
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ SAST_SEMGREP_METRICS=true
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ SAST_EXPERIMENTAL_FEATURES=false
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ SAST_EXCLUDED_PATHS=
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ SAST_SCANNER_ALLOWED_CLI_OPTS=
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:256] ▶ SAST_EXCLUDED_PATHS=
[INFO] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:131] ▶ Detecting project
[INFO] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:153] ▶ Analyzer will attempt to analyze all projects in the repository
[INFO] [Semgrep] [2023-01-18T04:06:07Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:165] ▶ Running analyzer
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/src/buildapp/analyze.go:90] ▶ custom rulesets not enabled
[DEBU] [Semgrep] [2023-01-18T04:06:07Z] [/go/src/buildapp/analyze.go:128] ▶ /usr/local/bin/semgrep -f /rules -o /tmp/app/semgrep.sarif --sarif --no-rewrite-rule-ids --strict --disable-version-check --no-git-ignore --enable-metrics --verbose
[DEBU] [Semgrep] [2023-01-18T04:06:44Z] [/go/src/buildapp/analyze.go:137] ▶ METRICS: Using configs from the Registry (like --config=p/ci) reports pseudonymous rule metrics to semgrep.dev.
To disable Registry rule metrics, use "--metrics=off".
Using configs only from local files (like --config=xyz.yml) does not enable metrics.

More information: https://semgrep.dev/docs/metrics

running 311 rules from 7 configs
Using explicit semgrepignore file from environment variable
Rules:
- bandit.B101
- bandit.B102
- bandit.B103
- bandit.B104
- bandit.B105
- bandit.B106
- bandit.B107
- bandit.B108
- bandit.B108-2
- bandit.B110
- bandit.B112
- bandit.B201
- bandit.B301-1
- bandit.B301-2
- bandit.B301-3
- bandit.B301-4
- bandit.B302
- bandit.B303-1
- bandit.B303-2
- bandit.B303-3
- bandit.B303-4
- bandit.B303-5
- bandit.B303-6
- bandit.B303-7
- bandit.B303-8
- bandit.B304-1
- bandit.B304-10
- bandit.B304-11
- bandit.B304-12
- bandit.B304-2
- bandit.B304-3
- bandit.B304-4
- bandit.B304-5
- bandit.B304-6
- bandit.B304-7
- bandit.B304-8
- bandit.B304-9
- bandit.B305
- bandit.B306
- bandit.B307
- bandit.B309
- bandit.B310-1
- bandit.B310-2
- bandit.B311
- bandit.B312
- bandit.B313
- bandit.B314
- bandit.B315
- bandit.B316
- bandit.B317
- bandit.B318
- bandit.B319
- bandit.B320
- bandit.B321
- bandit.B323
- bandit.B324
- bandit.B325
- bandit.B401
- bandit.B402
- bandit.B403
- bandit.B404
- bandit.B405
- bandit.B406
- bandit.B407
- bandit.B408
- bandit.B409
- bandit.B410
- bandit.B411
- bandit.B412
- bandit.B413
- bandit.B501
- bandit.B502
- bandit.B504
- bandit.B505-1
- bandit.B505-2
- bandit.B506
- bandit.B507
- bandit.B601
- bandit.B602
- bandit.B603
- bandit.B604
- bandit.B605
- bandit.B606
- bandit.B607
- bandit.B608
- bandit.B609
- bandit.B610
- bandit.B611
- bandit.B701
- bandit.B702
- bandit.B703
- eslint.detect-buffer-noassert
- eslint.detect-child-process
- eslint.detect-disable-mustache-escape
- eslint.detect-eval-with-expression
- eslint.detect-no-csrf-before-method-override
- eslint.detect-non-literal-fs-filename
- eslint.detect-non-literal-regexp
- eslint.detect-non-literal-require
- eslint.detect-object-injection
- eslint.detect-possible-timing-attacks
- eslint.detect-pseudoRandomBytes
- eslint.react-dangerouslysetinnerhtml
- eslint.react-missing-noopener
- find_sec_bugs.AWS_QUERY_INJECTION-1
- find_sec_bugs.BAD_HEXA_CONVERSION-1
- find_sec_bugs.BEAN_PROPERTY_INJECTION-1
- find_sec_bugs.BLOWFISH_KEY_SIZE-1
- find_sec_bugs.CIPHER_INTEGRITY-1
- find_sec_bugs.COMMAND_INJECTION-1
- find_sec_bugs.COOKIE_PERSISTENT-1
- find_sec_bugs.COOKIE_USAGE-1
- find_sec_bugs.CRLF_INJECTION_LOGS-1
- find_sec_bugs.CUSTOM_INJECTION-1
- find_sec_bugs.CUSTOM_INJECTION-2
- find_sec_bugs.CUSTOM_MESSAGE_DIGEST-1
- find_sec_bugs.DANGEROUS_PERMISSION_COMBINATION-1
- find_sec_bugs.DEFAULT_HTTP_CLIENT-1
- find_sec_bugs.DES_USAGE-1
- find_sec_bugs.DMI_CONSTANT_DB_PASSWORD-1.HARD_CODE_PASSWORD-3
- find_sec_bugs.DMI_EMPTY_DB_PASSWORD-1.HARD_CODE_PASSWORD-2
- find_sec_bugs.ECB_MODE-1
- find_sec_bugs.EL_INJECTION-1
- find_sec_bugs.EXTERNAL_CONFIG_CONTROL-1
- find_sec_bugs.FILE_UPLOAD_FILENAME-1
- find_sec_bugs.FORMAT_STRING_MANIPULATION-1
- find_sec_bugs.HARD_CODE_PASSWORD-1
- find_sec_bugs.HAZELCAST_SYMMETRIC_ENCRYPTION-1
- find_sec_bugs.HRS_REQUEST_PARAMETER_TO_COOKIE-1
- find_sec_bugs.HRS_REQUEST_PARAMETER_TO_HTTP_HEADER-1
- find_sec_bugs.HTTPONLY_COOKIE-1
- find_sec_bugs.HTTP_PARAMETER_POLLUTION-1
- find_sec_bugs.HTTP_RESPONSE_SPLITTING-1
- find_sec_bugs.IMPROPER_UNICODE-1
- find_sec_bugs.INFORMATION_EXPOSURE_THROUGH_AN_ERROR_MESSAGE-1
- find_sec_bugs.INSECURE_COOKIE-1
- find_sec_bugs.INSECURE_SMTP_SSL-1
- find_sec_bugs.JAXRS_ENDPOINT-1
- find_sec_bugs.JAXWS_ENDPOINT-1
- find_sec_bugs.LDAP_ANONYMOUS-1
- find_sec_bugs.LDAP_ENTRY_POISONING-1
- find_sec_bugs.LDAP_INJECTION-1
- find_sec_bugs.MALICIOUS_XSLT-1
- find_sec_bugs.MODIFICATION_AFTER_VALIDATION-1
- find_sec_bugs.NORMALIZATION_AFTER_VALIDATION-1
- find_sec_bugs.NULL_CIPHER-1
- find_sec_bugs.OGNL_INJECTION-1
- find_sec_bugs.OVERLY_PERMISSIVE_FILE_PERMISSION-1
- find_sec_bugs.OVERLY_PERMISSIVE_FILE_PERMISSION-2
- find_sec_bugs.PADDING_ORACLE-1
- find_sec_bugs.PATH_TRAVERSAL_IN-1
- find_sec_bugs.PATH_TRAVERSAL_OUT-1.PATH_TRAVERSAL_OUT-1
- find_sec_bugs.PERMISSIVE_CORS-1
- find_sec_bugs.PERMISSIVE_CORS-2
- find_sec_bugs.PREDICTABLE_RANDOM-1
- find_sec_bugs.PT_ABSOLUTE_PATH_TRAVERSAL-1
- find_sec_bugs.PT_RELATIVE_PATH_TRAVERSAL-1
- find_sec_bugs.REQUESTDISPATCHER_FILE_DISCLOSURE-1.STRUTS_FILE_DISCLOSURE-1.SPRING_FILE_DISCLOSURE-1
- find_sec_bugs.RPC_ENABLED_EXTENSIONS-1
- find_sec_bugs.RSA_KEY_SIZE-1
- find_sec_bugs.RSA_NO_PADDING-1
- find_sec_bugs.SAML_IGNORE_COMMENTS-1
- find_sec_bugs.SCRIPT_ENGINE_INJECTION-1.SPEL_INJECTION-1.EL_INJECTION-2.SEAM_LOG_INJECTION-1
- find_sec_bugs.SCRIPT_ENGINE_INJECTION-2
- find_sec_bugs.SERVLET_PARAMETER-1.SERVLET_CONTENT_TYPE-1.SERVLET_SERVER_NAME-1.SERVLET_SESSION_ID-1.SERVLET_QUERY_STRING-1.SERVLET_HEADER-1.SERVLET_HEADER_REFERER-1.SERVLET_HEADER_USER_AGENT-1
- find_sec_bugs.SMTP_HEADER_INJECTION-1
- find_sec_bugs.SQL_INJECTION_SPRING_JDBC-1.SQL_INJECTION_JPA-1.SQL_INJECTION_JDO-1.SQL_INJECTION_JDBC-1.SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE-1
- find_sec_bugs.SSL_CONTEXT-1
- find_sec_bugs.STRUTS_FORM_VALIDATION-1
- find_sec_bugs.TDES_USAGE-1
- find_sec_bugs.TEMPLATE_INJECTION_PEBBLE-1.TEMPLATE_INJECTION_FREEMARKER-1.TEMPLATE_INJECTION_VELOCITY-1
- find_sec_bugs.TRUST_BOUNDARY_VIOLATION-1
- find_sec_bugs.UNENCRYPTED_SOCKET-1.UNENCRYPTED_SERVER_SOCKET-1
- find_sec_bugs.UNVALIDATED_REDIRECT-1.URL_REWRITING-1
- find_sec_bugs.URLCONNECTION_SSRF_FD-1
- find_sec_bugs.WEAK_FILENAMEUTILS-1
- find_sec_bugs.WEAK_HOSTNAME_VERIFIER-1.WEAK_TRUST_MANAGER-1
- find_sec_bugs.WEAK_MESSAGE_DIGEST_MD5-1.WEAK_MESSAGE_DIGEST_SHA1-1
- find_sec_bugs.WICKET_XSS1-1
- find_sec_bugs.XML_DECODER-1
- find_sec_bugs.XPATH_INJECTION-1
- find_sec_bugs.XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER-1
- find_sec_bugs.XSS_REQUEST_WRAPPER-1
- find_sec_bugs.XSS_SERVLET-1
- find_sec_bugs.XSS_SERVLET-2.XSS_SERVLET_PARAMETER-1
- find_sec_bugs.XXE_DTD_TRANSFORM_FACTORY-1.XXE_XSLT_TRANSFORM_FACTORY-1
- find_sec_bugs.XXE_SAXPARSER-1
- find_sec_bugs.XXE_XMLREADER-1
- find_sec_bugs.XXE_XMLSTREAMREADER-1
- find_sec_bugs.XXE_XPATH-1.XXE_DOCUMENT-1
- flawfinder.AddAccessAllowedAce-1
- flawfinder.CreateProcess-1
- flawfinder.CreateProcessAsUser-1.CreateProcessWithLogon-1
- flawfinder.EVP_des_ecb-1.EVP_des_cbc-1.EVP_des_cfb-1.EVP_des_ofb-1.EVP_desx_cbc-1
- flawfinder.EVP_rc4_40-1.EVP_rc2_40_cbc-1.EVP_rc2_64_cbc-1
- flawfinder.GetTempFileName-1
- flawfinder.InitializeCriticalSection-1
- flawfinder.LoadLibrary-1
- flawfinder.LoadLibraryEx-1
- flawfinder.MultiByteToWideChar-1
- flawfinder.RpcImpersonateClient-1.ImpersonateLoggedOnUser-1.CoImpersonateClient-1.ImpersonateNamedPipeClient-1.ImpersonateDdeClientWindow-1.ImpersonateSecurityContext-1.SetThreadToken-1
- flawfinder.SetSecurityDescriptorDacl-1
- flawfinder.StrCat-1.StrCatA-1.StrcatW-1.lstrcatA-1.lstrcatW-1.strCatBuff-1.StrCatBuffA-1.StrCatBuffW-1.StrCatChainW-1._tccat-1._mbccat-1._ftcscat-1.StrCatN-1.StrCatNA-1.StrCatNW-1.StrNCat-1.StrNCatA-1.StrNCatW-1.lstrncat-1.lstrcatnA-1.lstrcatnW-1
- flawfinder.access-1
- flawfinder.atoi-1.atol-1._wtoi-1._wtoi64-1
- flawfinder.char-1.TCHAR-1.wchar_t-1
- flawfinder.chgrp-1
- flawfinder.chmod-1
- flawfinder.chown-1
- flawfinder.chroot-1
- flawfinder.crypt-1.crypt_r-1
- flawfinder.cuserid-1
- flawfinder.drand48-1.erand48-1.jrand48-1.lcong48-1.lrand48-1.mrand48-1.nrand48-1.random-1.seed48-1.setstate-1.srand-1.strfry-1.srandom-1.g_rand_boolean-1.g_rand_int-1.g_rand_int_range-1.g_rand_double-1.g_rand_double_range-1.g_random_boolean-1.g_random_int-1.g_random_int_range-1.g_random_double-1.g_random_double_range-1
- flawfinder.equal-1.mismatch-1.is_permutation-1
- flawfinder.execl-1.execlp-1.execle-1.execv-1.execvp-1.popen-1.WinExec-1.ShellExecute-1
- flawfinder.fopen-1.open-1
- flawfinder.fprintf-1.vfprintf-1._ftprintf-1._vftprintf-1.fwprintf-1.fvwprintf-1
- flawfinder.fscanf-1.sscanf-1.vsscanf-1.vfscanf-1._ftscanf-1.fwscanf-1.vfwscanf-1.vswscanf-1
- flawfinder.g_get_home_dir-1
- flawfinder.g_get_tmp_dir-1
- flawfinder.getchar-1.fgetc-1.getc-1.read-1._gettc-1
- flawfinder.getenv-1.curl_getenv-1
- flawfinder.getlogin-1
- flawfinder.getopt-1.getopt_long-1
- flawfinder.getpass-1
- flawfinder.getpw-1
- flawfinder.gets-1._getts-1
- flawfinder.getwd-1
- flawfinder.gsignal-1.ssignal-1
- flawfinder.lstrcat-1.wcscat-1._tcscat-1._mbscat-1
- flawfinder.lstrcatn-1.wcsncat-1._tcsncat-1._mbsnbcat-1
- flawfinder.lstrcpy-1.wcscpy-1._tcscpy-1._mbscpy-1
- flawfinder.lstrcpyn-1.wcsncpy-1._tcsncpy-1._mbsnbcpy-1
- flawfinder.memalign-1
- flawfinder.memcpy-1.CopyMemory-1.bcopy-1
- flawfinder.mkstemp-1
- flawfinder.mktemp-1
- flawfinder.printf-1.vprintf-1.vwprintf-1.vfwprintf-1._vtprintf-1.wprintf-1
- flawfinder.readlink-1
- flawfinder.realpath-1
- flawfinder.scanf-1.vscanf-1.wscanf-1._tscanf-1.vwscanf-1
- flawfinder.snprintf-1.vsnprintf-1._snprintf-1._sntprintf-1._vsntprintf-1
- flawfinder.sprintf-1.vsprintf-1.swprintf-1.vswprintf-1._stprintf-1._vstprintf-1
- flawfinder.strcat-1
- flawfinder.strccpy-1.strcadd-1
- flawfinder.strcpy-1
- flawfinder.strcpyA-1.strcpyW-1.StrCpy-1.StrCpyA-1.lstrcpyA-1.lstrcpyW-1._tccpy-1._mbccpy-1._ftcscpy-1._mbsncpy-1.StrCpyN-1.StrCpyNA-1.StrCpyNW-1.StrNCpy-1.strcpynA-1.StrNCpyA-1.StrNCpyW-1.lstrcpynA-1.lstrcpynW-1
- flawfinder.streadd-1.strecpy-1
- flawfinder.strlen-1.wcslen-1._tcslen-1._mbslen-1
- flawfinder.strncat-1
- flawfinder.strncpy-1
- flawfinder.strtrns-1
- flawfinder.syslog-1
- flawfinder.system-1
- flawfinder.tmpfile-1
- flawfinder.tmpnam-1.tempnam-1
- flawfinder.ulimit-1
- flawfinder.umask-1
- flawfinder.usleep-1
- flawfinder.vfork-1
- gosec.G101-1
- gosec.G102-1
- gosec.G103-1
- gosec.G106-1
- gosec.G107-1
- gosec.G108-1
- gosec.G109-1
- gosec.G110-1
- gosec.G201-1
- gosec.G202-1
- gosec.G203-1
- gosec.G204-1
- gosec.G301-1
- gosec.G302-1
- gosec.G303-1
- gosec.G304-1
- gosec.G305-1
- gosec.G306-1
- gosec.G401-1
- gosec.G402-1
- gosec.G402-2
- gosec.G403-1
- gosec.G404-1
- gosec.G501-1
- gosec.G502-1
- gosec.G503-1
- gosec.G504-1
- gosec.G505-1
- gosec.G601-1
- security_code_scan.SCS0001-1
- security_code_scan.SCS0002-1
- security_code_scan.SCS0003-1
- security_code_scan.SCS0004-1
- security_code_scan.SCS0005-1
- security_code_scan.SCS0006-1
- security_code_scan.SCS0007-1
- security_code_scan.SCS0008-1
- security_code_scan.SCS0009-1
- security_code_scan.SCS0010-1
- security_code_scan.SCS0011-1
- security_code_scan.SCS0012-1
- security_code_scan.SCS0013-1
- security_code_scan.SCS0016-1
- security_code_scan.SCS0017-1
- security_code_scan.SCS0018-1
- security_code_scan.SCS0019-1
- security_code_scan.SCS0026-1.SCS0031-1
- security_code_scan.SCS0027-1
- security_code_scan.SCS0028-1
- security_code_scan.SCS0029-1
- security_code_scan.SCS0032-1.SCS0033-1.SCS0034-1
Scanning 1 file with 91 python rules.

========================================
Files skipped:
========================================

  Always skipped by Semgrep:

   • <none>

  Skipped by .gitignore:
  (Disabled with --no-git-ignore)

   • <none>

  Skipped by .semgrepignore:
  (See: https://semgrep.dev/docs/ignoring-files-folders-code/#understanding-semgrep-defaults)

   • <none>

  Skipped by --include patterns:

   • <none>

  Skipped by --exclude patterns:

   • <none>

  Skipped by limiting to files smaller than 1000000 bytes:
  (Adjust with the --max-target-bytes flag)

   • <none>

  Skipped by analysis failure due to parsing or internal Semgrep error

   • test.py (2 lines skipped)


Some files were skipped or only partially analyzed.
  Partially scanned: 1 files only partially analyzed due to a parsing or internal Semgrep error

Ran 311 rules on 1 file: 1 finding.
Sending pseudonymous metrics since metrics are configured to ON and registry usage is False

[INFO] [Semgrep] [2023-01-18T04:06:44Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/run.go:179] ▶ Creating report
[DEBU] [Semgrep] [2023-01-18T04:06:44Z] [/go/src/buildapp/convert.go:40] ▶ Converting report with the root path: /tmp/app
[WARN] [Semgrep] [2023-01-18T04:06:44Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/report/v3@v3.17.0/sarif.go:344] ▶ tool notification warning: Syntax error Syntax error at line test.py:5:
 `$` was unexpected
[DEBU] [Semgrep] [2023-01-18T04:06:44Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/report/v3@v3.17.0/report.go:229] ▶ custom rulesets not enabled
[DEBU] [Semgrep] [2023-01-18T04:06:44Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/report/v3@v3.17.0/report.go:271] ▶ Applying report overrides
[DEBU] [Semgrep] [2023-01-18T04:06:44Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/report/v3@v3.17.0/report.go:277] ▶ custom rulesets not enabled
[DEBU] [Semgrep] [2023-01-18T04:06:44Z] [/go/pkg/mod/gitlab.com/gitlab-org/security-products/analyzers/command@v1.10.1/jsonout.go:54] ▶ Optimizing JSON Output

What are the relevant issue numbers?

See reported customer issue where Semgrep errored but no useful logs were captured.

Does this MR meet the acceptance criteria?

Edited by Zach Rice

Merge request reports