internal/core/corescan/create_context.go (89 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 corescan
import (
"path/filepath"
"strings"
"github.com/JetBrains/qodana-cli/internal/core/startup"
platformcmd "github.com/JetBrains/qodana-cli/internal/platform/cmd"
"github.com/JetBrains/qodana-cli/internal/platform/commoncontext"
"github.com/JetBrains/qodana-cli/internal/platform/qdcontainer"
"github.com/JetBrains/qodana-cli/internal/platform/qdenv"
)
func CreateContext(
cliOptions platformcmd.CliOptions,
commonCtx commoncontext.Context,
preparedHost startup.PreparedHost,
qodanaYamlConfig QodanaYamlConfig,
effectiveConfigurationDir string,
) Context {
coverageDir := cliOptions.CoverageDir
if coverageDir == "" {
if qdenv.IsContainer() {
coverageDir = qdcontainer.DataCoverageDir
} else {
coverageDir = filepath.Join(commonCtx.ProjectDir, ".qodana", "code-coverage")
}
}
commit := strings.TrimPrefix(cliOptions.Commit, "CI")
return ContextBuilder{
Analyser: commonCtx.Analyzer,
Id: commonCtx.Id,
IdeDir: preparedHost.IdeDir,
EffectiveConfigurationDir: effectiveConfigurationDir,
Prod: preparedHost.Prod,
QodanaUploadToken: preparedHost.QodanaUploadToken,
ProjectDir: commonCtx.ProjectDir,
RepositoryRoot: commonCtx.RepositoryRoot,
ResultsDir: commonCtx.ResultsDir,
ConfigDir: commonCtx.ConfDirPath(),
LogDir: commonCtx.LogDir(),
QodanaSystemDir: commonCtx.QodanaSystemDir,
CacheDir: commonCtx.CacheDir,
ReportDir: commonCtx.ReportDir,
CoverageDir: coverageDir,
OnlyDirectory: cliOptions.OnlyDirectory,
Env: cliOptions.Env_,
DisableSanity: cliOptions.DisableSanity,
ProfileName: cliOptions.ProfileName,
ProfilePath: cliOptions.ProfilePath,
RunPromo: cliOptions.RunPromo,
Baseline: cliOptions.Baseline,
BaselineIncludeAbsent: cliOptions.BaselineIncludeAbsent,
SaveReport: cliOptions.SaveReport,
ShowReport: cliOptions.ShowReport,
Port: cliOptions.Port,
Property: cliOptions.Property,
Script: cliOptions.Script,
FailThreshold: cliOptions.FailThreshold,
Commit: commit,
DiffStart: cliOptions.DiffStart,
DiffEnd: cliOptions.DiffEnd,
ForceLocalChangesScript: cliOptions.ForceLocalChangesScript,
ReversePrAnalysis: cliOptions.ReversePrAnalysis,
AnalysisId: cliOptions.AnalysisId,
Volumes: cliOptions.Volumes,
User: cliOptions.User,
PrintProblems: cliOptions.PrintProblems,
GenerateCodeClimateReport: cliOptions.GenerateCodeClimateReport,
SendBitBucketInsights: cliOptions.SendBitBucketInsights,
SkipPull: cliOptions.SkipPull,
FullHistory: cliOptions.FullHistory,
ApplyFixes: cliOptions.ApplyFixes,
Cleanup: cliOptions.Cleanup,
FixesStrategy: cliOptions.FixesStrategy,
NoStatistics: cliOptions.NoStatistics,
CdnetSolution: cliOptions.CdnetSolution,
CdnetProject: cliOptions.CdnetProject,
CdnetConfiguration: cliOptions.CdnetConfiguration,
CdnetPlatform: cliOptions.CdnetPlatform,
CdnetNoBuild: cliOptions.CdnetNoBuild,
ClangCompileCommands: cliOptions.ClangCompileCommands,
ClangArgs: cliOptions.ClangArgs,
AnalysisTimeoutMs: cliOptions.AnalysisTimeoutMs,
AnalysisTimeoutExitCode: cliOptions.AnalysisTimeoutExitCode,
JvmDebugPort: cliOptions.JvmDebugPort,
GlobalConfigurationsDir: cliOptions.GlobalConfigurationsDir,
GlobalConfigurationId: cliOptions.GlobalConfigurationId,
CustomLocalQodanaYamlPath: cliOptions.ConfigName,
QodanaYamlConfig: qodanaYamlConfig,
}.Build()
}