mirror of
https://github.com/Dvorinka/Devour.git
synced 2026-06-04 04:23:02 +00:00
updage
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/yourorg/devour/internal/quality"
|
||||
"github.com/yourorg/devour/internal/quality/scorecard"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Create sample quality state with some findings
|
||||
state := &quality.State{
|
||||
Findings: []quality.Finding{
|
||||
{
|
||||
ID: "complexity-1",
|
||||
Type: "complexity",
|
||||
Title: "High cyclomatic complexity",
|
||||
Description: "Function has too many nested loops and conditionals",
|
||||
File: "src/main.go",
|
||||
Line: 42,
|
||||
Severity: quality.SeverityT3,
|
||||
Score: 15,
|
||||
Status: quality.StatusOpen,
|
||||
CreatedAt: time.Now().Add(-2 * time.Hour),
|
||||
UpdatedAt: time.Now().Add(-2 * time.Hour),
|
||||
},
|
||||
{
|
||||
ID: "naming-1",
|
||||
Type: "naming",
|
||||
Title: "Inconsistent naming convention",
|
||||
Description: "Variable name doesn't follow project conventions",
|
||||
File: "src/utils.go",
|
||||
Line: 15,
|
||||
Severity: quality.SeverityT2,
|
||||
Score: 8,
|
||||
Status: quality.StatusOpen,
|
||||
CreatedAt: time.Now().Add(-1 * time.Hour),
|
||||
UpdatedAt: time.Now().Add(-1 * time.Hour),
|
||||
},
|
||||
{
|
||||
ID: "duplication-1",
|
||||
Type: "duplication",
|
||||
Title: "Code duplication detected",
|
||||
Description: "Similar code blocks found in multiple files",
|
||||
File: "src/helper.go",
|
||||
Line: 78,
|
||||
Severity: quality.SeverityT2,
|
||||
Score: 10,
|
||||
Status: quality.StatusOpen,
|
||||
CreatedAt: time.Now().Add(-30 * time.Minute),
|
||||
UpdatedAt: time.Now().Add(-30 * time.Minute),
|
||||
},
|
||||
{
|
||||
ID: "security-1",
|
||||
Type: "security",
|
||||
Title: "Potential security vulnerability",
|
||||
Description: "SQL injection possibility detected",
|
||||
File: "src/database.go",
|
||||
Line: 120,
|
||||
Severity: quality.SeverityT4,
|
||||
Score: 25,
|
||||
Status: quality.StatusOpen,
|
||||
CreatedAt: time.Now().Add(-4 * time.Hour),
|
||||
UpdatedAt: time.Now().Add(-4 * time.Hour),
|
||||
},
|
||||
{
|
||||
ID: "unused_import-1",
|
||||
Type: "unused_import",
|
||||
Title: "Unused import detected",
|
||||
Description: "Import statement is not used in the file",
|
||||
File: "src/types.go",
|
||||
Line: 5,
|
||||
Severity: quality.SeverityT1,
|
||||
Score: 3,
|
||||
Status: quality.StatusOpen,
|
||||
CreatedAt: time.Now().Add(-15 * time.Minute),
|
||||
UpdatedAt: time.Now().Add(-15 * time.Minute),
|
||||
},
|
||||
},
|
||||
LastScan: time.Now(),
|
||||
Scorecard: &quality.Scorecard{
|
||||
TotalScore: 72,
|
||||
StrictScore: 68,
|
||||
FindingsByType: map[string]int{
|
||||
"complexity": 1,
|
||||
"naming": 1,
|
||||
"duplication": 1,
|
||||
"security": 1,
|
||||
"unused_import": 1,
|
||||
},
|
||||
FindingsByTier: map[quality.Severity]int{
|
||||
quality.SeverityT1: 1,
|
||||
quality.SeverityT2: 2,
|
||||
quality.SeverityT3: 1,
|
||||
quality.SeverityT4: 1,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// Generate scorecard data
|
||||
scoreData := scorecard.FromQualityState(state, "Devour Demo", "1.0.0")
|
||||
|
||||
// Generate different types of scorecards
|
||||
fmt.Println("Generating sample scorecards...")
|
||||
|
||||
// Generate standard badge
|
||||
if err := scorecard.Generate(scoreData, "scorecard_badge.png"); err != nil {
|
||||
fmt.Printf("Error generating badge: %v\n", err)
|
||||
} else {
|
||||
fmt.Println("✓ Generated scorecard_badge.png")
|
||||
}
|
||||
|
||||
// Generate compact scorecard
|
||||
if err := scorecard.GenerateCompact(scoreData, "scorecard_compact.png"); err != nil {
|
||||
fmt.Printf("Error generating compact: %v\n", err)
|
||||
} else {
|
||||
fmt.Println("✓ Generated scorecard_compact.png")
|
||||
}
|
||||
|
||||
// Generate detailed scorecard
|
||||
if err := scorecard.GenerateDetailed(scoreData, "scorecard_detailed.png"); err != nil {
|
||||
fmt.Printf("Error generating detailed: %v\n", err)
|
||||
} else {
|
||||
fmt.Println("✓ Generated scorecard_detailed.png")
|
||||
}
|
||||
|
||||
// Generate dark theme versions
|
||||
if err := scorecard.GenerateDark(scoreData, "scorecard_badge_dark.png"); err != nil {
|
||||
fmt.Printf("Error generating dark badge: %v\n", err)
|
||||
} else {
|
||||
fmt.Println("✓ Generated scorecard_badge_dark.png")
|
||||
}
|
||||
|
||||
if err := scorecard.GenerateCompactDark(scoreData, "scorecard_compact_dark.png"); err != nil {
|
||||
fmt.Printf("Error generating dark compact: %v\n", err)
|
||||
} else {
|
||||
fmt.Println("✓ Generated scorecard_compact_dark.png")
|
||||
}
|
||||
|
||||
if err := scorecard.GenerateDetailedDark(scoreData, "scorecard_detailed_dark.png"); err != nil {
|
||||
fmt.Printf("Error generating dark detailed: %v\n", err)
|
||||
} else {
|
||||
fmt.Println("✓ Generated scorecard_detailed_dark.png")
|
||||
}
|
||||
|
||||
fmt.Println("\nScorecard generation complete!")
|
||||
fmt.Printf("Project: %s\n", scoreData.ProjectName)
|
||||
fmt.Printf("Version: %s\n", scoreData.Version)
|
||||
fmt.Printf("Overall Score: %.1f\n", scoreData.OverallScore)
|
||||
fmt.Printf("Strict Score: %.1f\n", scoreData.StrictScore)
|
||||
fmt.Printf("Grade: %s\n", scoreData.Grade)
|
||||
fmt.Printf("Total Findings: %d\n", scoreData.FindingsTotal)
|
||||
fmt.Printf("Open Findings: %d\n", scoreData.FindingsOpen)
|
||||
}
|
||||
Reference in New Issue
Block a user