internal/platform/files.go (54 lines of code) (raw):

/* * Copyright 2021-2024 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package platform import ( "bytes" "fmt" "path/filepath" "reflect" "text/tabwriter" "unsafe" log "github.com/sirupsen/logrus" ) func LogContext(contextPointer any) { buffer := new(bytes.Buffer) w := new(tabwriter.Writer) w.Init(buffer, 0, 8, 2, '\t', 0) _, err := fmt.Fprintln(w, "Option\tValue\t") if err != nil { return } _, err = fmt.Fprintln(w, "------\t-----\t") if err != nil { return } value := reflect.ValueOf(contextPointer).Elem() typeInfo := value.Type() for i := 0; i < value.NumField(); i++ { fieldType := typeInfo.Field(i) fieldValue := value.Field(i) // unexported fields fieldValue = reflect.NewAt(fieldValue.Type(), unsafe.Pointer(fieldValue.UnsafeAddr())).Elem() line := fmt.Sprintf("%s\t%v\t", fieldType.Name, fieldValue.Interface()) _, err = fmt.Fprintln(w, line) if err != nil { return } } if err := w.Flush(); err != nil { return } log.Debug(buffer.String()) } func ReportResultsPath(reportDir string) string { return filepath.Join(reportDir, "results") } func GetTmpResultsDir(resultsDir string) string { return filepath.Join(resultsDir, "tmp") } func GetCoverageArtifactsPath(resultsDir string) string { return filepath.Join(resultsDir, "coverage") } func GetSarifPath(resultsDir string) string { return filepath.Join(resultsDir, "qodana.sarif.json") } func GetShortSarifPath(resultsDir string) string { return filepath.Join(resultsDir, "qodana-short.sarif.json") }