domain

package
v1.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2026 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ComputeOutputDiff

func ComputeOutputDiff(expected, actual string) (OutputMatchStatus, []DiffLine)

Computes output diff between expected and actual output

Types

type AIDetectionReport

type AIDetectionReport struct {
	SourceFile           string
	DictionaryEntryCount int
	DictionaryUsable     int
	DictionaryErrors     []AIDictionaryEntryError
	Results              []AISubmissionResult
}

type AIDictionaryEntryError

type AIDictionaryEntryError struct {
	EntryID string
	Err     string
}

type AIDictionaryMatch

type AIDictionaryMatch struct {
	EntryID  string
	Category string
	Title    string
	Jaccard  float64
	Flagged  bool
	Spans    []MatchSpan
}

type AISubmissionResult

type AISubmissionResult struct {
	SubmissionIndex int
	SubmissionID    string
	SourceFile      string
	FunctionCount   int
	MatchCount      int
	BestScore       float64
	Flagged         bool
	ParseError      string
	Matches         []AIDictionaryMatch
}

type BannedHit

type BannedHit struct {
	Function string
	File     string
	Line     int
	Column   int
	Snippet  string
}

func NewBannedHit

func NewBannedHit(function, file string, line, column int, snippet string) BannedHit

type CompareConfig

type CompareConfig struct {
	WindowSize     int
	MinFuncTokens  int
	ScoreThreshold float64
}

type CompileResult

type CompileResult struct {
	OK         bool
	Command    []string
	ExitCode   int
	Stdout     string
	Stderr     string
	DurationMs int64
	TimedOut   bool
}

func NewCompileResult

func NewCompileResult(ok bool, command []string, exitCode int, stdout, stderr string, durationMs int64, timedOut bool) CompileResult

type DiffLine

type DiffLine struct {
	Type    string // "same", "added", "removed"
	Content string
	LineNum int
}

type ExecuteResult

type ExecuteResult struct {
	OK           bool
	ExitCode     int
	Stdout       string
	Stderr       string
	Duration     time.Duration
	TimedOut     bool
	Args         []string
	Input        string
	TestCaseName string
	ExpectedExit *int
	Passed       bool
	OutputMatch  OutputMatchStatus
	OutputDiff   []DiffLine
}

func NewExecuteResult

func NewExecuteResult(ok bool, exitCode int, stdout, stderr string, duration time.Duration, timedOut bool, args []string, input string) ExecuteResult

func (ExecuteResult) WithTestCase

func (r ExecuteResult) WithTestCase(name string, expectedExit *int) ExecuteResult

type FileFingerprint

type FileFingerprint struct {
	FunctionHashes  map[string]struct{}
	WindowHashes    map[string]struct{}
	WindowSpans     map[string][]Span
	FunctionCount   int
	FunctionWindows []map[string]struct{}
	Content         []byte
	LineOffsets     []int
}

type MatchSpan

type MatchSpan struct {
	StartLine int // 1-based line number
	StartCol  int // 1-based column number
	EndLine   int // 1-based line number
	EndCol    int // 1-based column number
	Snippet   string
}

type MultiProcessResult

type MultiProcessResult struct {
	Processes     map[string]*ProcessResult
	Order         []string
	TotalDuration time.Duration
	AllCompleted  bool
	AllPassed     bool
	ScenarioName  string
}

func NewMultiProcessResult

func NewMultiProcessResult() *MultiProcessResult

func (*MultiProcessResult) AddProcess

func (m *MultiProcessResult) AddProcess(name string, result *ProcessResult)

type OutputMatchStatus

type OutputMatchStatus string
const (
	OutputMatchNone    OutputMatchStatus = "none"    // No expected output file configured
	OutputMatchPass    OutputMatchStatus = "pass"    // Output matches expected
	OutputMatchFail    OutputMatchStatus = "fail"    // Output differs from expected
	OutputMatchMissing OutputMatchStatus = "missing" // Expected output file not found
)

type PlagiarismResult

type PlagiarismResult struct {
	FileA             string
	FileB             string
	FunctionCountA    int
	FunctionCountB    int
	ExactMatches      int
	WindowMatches     int
	WindowUnion       int
	WindowJaccard     float64
	PerFuncSimilarity float64
	Flagged           bool
	Matches           []WindowMatch
}

type ProcessResult

type ProcessResult struct {
	Name         string
	SourceFile   string
	ExitCode     int
	Stdout       string
	Stderr       string
	Duration     time.Duration
	TimedOut     bool
	Killed       bool
	Running      bool
	StartedAt    time.Time
	FinishedAt   time.Time
	ExpectedExit *int
	Passed       bool
	OutputMatch  OutputMatchStatus
	OutputDiff   []DiffLine
}

type RunReport

type RunReport struct {
	PolicyName string
	Root       string
	StartedAt  time.Time
	FinishedAt time.Time
	Results    []SubmissionResult
	Summary    SummaryStats
}

func NewRunReport

func NewRunReport(policyName, root string, startedAt, finishedAt time.Time, results []SubmissionResult) RunReport

type ScanResult

type ScanResult struct {
	Hits           []BannedHit
	HitsByFunction map[string][]BannedHit
	ParseErrors    []string
}

func NewScanResult

func NewScanResult(hits []BannedHit, parseErrors []string) ScanResult

func (ScanResult) TotalHits

func (s ScanResult) TotalHits() int

type SimilarityPairResult

type SimilarityPairResult struct {
	AIndex int
	BIndex int
	Result PlagiarismResult
}

type Span

type Span struct {
	Start uint32 // Start byte offset
	End   uint32 // End byte offset
}

type Submission

type Submission struct {
	ID     string
	Path   string
	CFiles []string
}

func NewSubmission

func NewSubmission(id, path string, cFiles []string) Submission

type SubmissionResult

type SubmissionResult struct {
	Submission Submission
	Compile    CompileResult
	Scan       ScanResult
	Status     SubmissionStatus
}

func NewSubmissionResult

func NewSubmissionResult(sub Submission, compile CompileResult, scan ScanResult) SubmissionResult

type SubmissionStatus

type SubmissionStatus string
const (
	StatusPending  SubmissionStatus = "pending"
	StatusRunning  SubmissionStatus = "running"
	StatusClean    SubmissionStatus = "clean"
	StatusBanned   SubmissionStatus = "banned"
	StatusFailed   SubmissionStatus = "failed"
	StatusTimedOut SubmissionStatus = "timed_out"
	StatusError    SubmissionStatus = "error"
)

type SummaryStats

type SummaryStats struct {
	TotalSubmissions      int
	CompilePass           int
	CompileFail           int
	CompileTimeout        int
	BannedHitsTotal       int
	SubmissionsWithBanned int
	CleanSubmissions      int
	TopBannedFunctions    map[string]int
	DurationMs            int64
}

type TokenSpan

type TokenSpan struct {
	Token string
	Start uint32 // Start byte offset
	End   uint32 // End byte offset
}

type WindowMatch

type WindowMatch struct {
	Hash   string
	SpansA []MatchSpan
	SpansB []MatchSpan
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL