mirror of
https://github.com/Dvorinka/Devour.git
synced 2026-06-04 04:23:02 +00:00
updage
This commit is contained in:
+8
-49
@@ -14,7 +14,6 @@ import (
|
||||
"github.com/yourorg/devour/internal/quality/plugins"
|
||||
"github.com/yourorg/devour/internal/quality/plugins/go/fixers"
|
||||
"github.com/yourorg/devour/internal/quality/review"
|
||||
"github.com/yourorg/devour/internal/quality/scorecard"
|
||||
|
||||
_ "github.com/yourorg/devour/internal/quality/plugins/go"
|
||||
)
|
||||
@@ -104,7 +103,6 @@ var explain bool
|
||||
var tier int
|
||||
var resolveNote string
|
||||
var attest string
|
||||
var qualityUseAST bool
|
||||
var statusNarrative bool
|
||||
var fixDryRun bool
|
||||
var fixAll bool
|
||||
@@ -145,13 +143,13 @@ func init() {
|
||||
scanCmd.Flags().IntVar(&qualityThreshold, "threshold", 15, "Minimum score to flag an issue")
|
||||
scanCmd.Flags().IntVar(&qualityMinLOC, "min-loc", 50, "Minimum lines of code to analyze")
|
||||
scanCmd.Flags().IntVar(&qualityTargetScore, "target-score", 95, "Target health score")
|
||||
scanCmd.Flags().StringVar(&qualityFormat, "format", "text", "Output format (text, json)")
|
||||
scanCmd.Flags().StringVar(&qualityFormat, "format", "text", "Output format (text, json, strict)")
|
||||
scanCmd.Flags().BoolVar(&qualityResetSubjective, "reset-subjective", false, "Reset subjective baseline")
|
||||
scanCmd.Flags().BoolVar(&qualityNoBadge, "no-badge", false, "Skip badge generation")
|
||||
scanCmd.Flags().StringVar(&qualityBadgePath, "badge-path", "scorecard.png", "Badge output path")
|
||||
|
||||
// Status flags
|
||||
qualityStatusCmd.Flags().StringVar(&qualityFormat, "format", "text", "Output format (text, json)")
|
||||
qualityStatusCmd.Flags().StringVar(&qualityFormat, "format", "text", "Output format (text, json, strict)")
|
||||
qualityStatusCmd.Flags().BoolVar(&statusNarrative, "narrative", false, "Include narrative analysis")
|
||||
|
||||
// Next flags
|
||||
@@ -256,6 +254,9 @@ func runQualityStatus(cmd *cobra.Command, args []string) error {
|
||||
switch qualityFormat {
|
||||
case "json":
|
||||
return json.NewEncoder(os.Stdout).Encode(scorecard)
|
||||
case "strict":
|
||||
fmt.Println(scorer.FormatStrictScorecard(findings, lastScan))
|
||||
return nil
|
||||
default:
|
||||
fmt.Println(scorer.FormatScorecard(scorecard))
|
||||
return nil
|
||||
@@ -454,13 +455,9 @@ func outputScanResult(result *quality.ScanResult, format string) error {
|
||||
return fmt.Errorf("failed to save results: %w", err)
|
||||
}
|
||||
|
||||
// Generate scorecard badge if not disabled
|
||||
// Note: Scorecard generation is now handled by the dedicated 'devour scorecard' command
|
||||
if !qualityNoBadge && qualityBadgePath != "" {
|
||||
if err := generateScorecardBadge(result, qualityBadgePath); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Warning: failed to generate scorecard badge: %v\n", err)
|
||||
} else {
|
||||
fmt.Printf("Scorecard badge generated: %s\n", qualityBadgePath)
|
||||
}
|
||||
fmt.Printf("💡 Use 'devour scorecard' to generate beautiful scorecard banners\n")
|
||||
}
|
||||
|
||||
// Output based on format
|
||||
@@ -472,43 +469,6 @@ func outputScanResult(result *quality.ScanResult, format string) error {
|
||||
}
|
||||
}
|
||||
|
||||
func generateScorecardBadge(result *quality.ScanResult, outputPath string) error {
|
||||
// Calculate grade from score
|
||||
scorer := quality.NewScorer(qualityTargetScore)
|
||||
grade := scorer.GetHealthGrade(result.StrictScore)
|
||||
|
||||
// Group findings by type and tier
|
||||
findByType := make(map[string]int)
|
||||
findByTier := make(map[string]int)
|
||||
for _, f := range result.Findings {
|
||||
findByType[f.Type]++
|
||||
tierName := fmt.Sprintf("T%d", int(f.Severity))
|
||||
findByTier[tierName]++
|
||||
}
|
||||
|
||||
// Get project name from current directory
|
||||
projectName := "devour"
|
||||
if dir, err := os.Getwd(); err == nil {
|
||||
projectName = filepath.Base(dir)
|
||||
}
|
||||
|
||||
// Prepare scorecard data
|
||||
scoreData := &scorecard.ScorecardData{
|
||||
ProjectName: projectName,
|
||||
Version: "", // Could be extracted from version info
|
||||
OverallScore: float64(result.Score),
|
||||
StrictScore: float64(result.StrictScore),
|
||||
Grade: grade,
|
||||
FindingsTotal: len(result.Findings),
|
||||
FindingsOpen: len(result.Findings), // All findings are open initially
|
||||
LastScan: result.Timestamp,
|
||||
FindByType: findByType,
|
||||
FindByTier: findByTier,
|
||||
}
|
||||
|
||||
return scorecard.Generate(scoreData, outputPath)
|
||||
}
|
||||
|
||||
func formatScanResultText(result *quality.ScanResult) error {
|
||||
fmt.Println("Code Quality Scan Results")
|
||||
fmt.Println("=======================================")
|
||||
@@ -706,13 +666,12 @@ func prepareReviewPacket(dataDir string) error {
|
||||
func importReviewResponses(dataDir string, filename string) error {
|
||||
gen := review.NewPacketGenerator(dataDir)
|
||||
|
||||
responses := make(map[string]string)
|
||||
|
||||
data, err := os.ReadFile(filename)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to read responses file: %w", err)
|
||||
}
|
||||
|
||||
var responses map[string]string
|
||||
var respData struct {
|
||||
Responses map[string]string `json:"responses"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user