internal/platform/third_party_scan_cmd.go (52 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 (
"fmt"
"os"
platformcmd "github.com/JetBrains/qodana-cli/internal/platform/cmd"
"github.com/JetBrains/qodana-cli/internal/platform/msg"
"github.com/JetBrains/qodana-cli/internal/platform/thirdpartyscan"
"github.com/JetBrains/qodana-cli/internal/platform/utils"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)
// NewThirdPartyScanCommand returns a new instance of the scan command.
func NewThirdPartyScanCommand(linter ThirdPartyLinter, linterInfo thirdpartyscan.LinterInfo) *cobra.Command {
cliOptions := &platformcmd.CliOptions{}
c := &cobra.Command{
Use: "scan",
Short: "Scan project with Qodana",
Long: fmt.Sprintf(
`Scan a project with Qodana. It runs %s and reports the results.
Note that most options can be configured via qodana.yaml (https://www.jetbrains.com/help/qodana/qodana-yaml.html) file.
But you can always override qodana.yaml options with the following command-line options.
`, linterInfo.LinterPresentableName,
),
RunE: func(cmd *cobra.Command, args []string) error {
log.SetFormatter(&log.TextFormatter{DisableQuote: true, DisableTimestamp: true})
exitCode, err := RunThirdPartyLinterAnalysis(*cliOptions, linter, linterInfo)
log.Debug("exitCode: ", exitCode)
if exitCode == utils.QodanaFailThresholdExitCode {
msg.EmptyMessage()
msg.ErrorMessage("The number of problems exceeds the fail threshold")
os.Exit(exitCode)
}
return err
},
}
err := platformcmd.ComputeFlags(c, cliOptions)
if err != nil {
log.Fatal("Error while computing flags")
}
if cliOptions.Linter != "" {
msg.WarningMessage("Warning: --linter option is ignored when running a third-party linter.")
}
if cliOptions.Ide != "" {
msg.WarningMessage("Warning: --ide option is ignored when running a third-party linter.")
}
if cliOptions.Image != "" {
msg.WarningMessage("Warning: --image option is ignored when running a third-party linter.")
}
if cliOptions.WithinDocker != "" {
msg.WarningMessage("Warning: --within-docker option is ignored when running a third-party linter.")
}
return c
}