engine

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: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultTimeout = 5 * time.Second
	DefaultWorkers = 0 // 0 = runtime.NumCPU()
)

Variables

This section is empty.

Functions

func CompareFiles

func CompareFiles(fileA, fileB string, fpA, fpB domain.FileFingerprint, cfg domain.CompareConfig) domain.PlagiarismResult

func ComputeAIDetectionForProcess

func ComputeAIDetectionForProcess(submissions []domain.Submission, srcFile string, dict *aipkg.Dictionary, cfg domain.CompareConfig) (domain.AIDetectionReport, error)

ComputeAIDetectionForProcess compares each submission source file against dictionary fingerprints.

func ComputeSimilarityForProcess

func ComputeSimilarityForProcess(submissions []domain.Submission, srcFile string, cfg domain.CompareConfig) ([]domain.SimilarityPairResult, error)

func FingerprintFile

func FingerprintFile(path string, cfg domain.CompareConfig) (domain.FileFingerprint, error)

FingerprintFile parses a C file and creates a fingerprint.

Types

type CompileEngine

type CompileEngine struct {
	// contains filtered or unexported fields
}

func NewCompileEngine

func NewCompileEngine(p *policy.Policy, opts ...CompileOption) (*CompileEngine, error)

func (*CompileEngine) Cleanup

func (e *CompileEngine) Cleanup() error

func (*CompileEngine) CompileAll

func (e *CompileEngine) CompileAll(ctx context.Context, submissions []domain.Submission, onComplete func(domain.Submission, domain.CompileResult)) []domain.CompileResult

type CompileOption

type CompileOption func(*CompileEngine)

func WithOutputDir

func WithOutputDir(dir string) CompileOption

func WithShortNames

func WithShortNames(enabled bool) CompileOption

func WithWorkers

func WithWorkers(n int) CompileOption

type DiscoveryEngine

type DiscoveryEngine struct {
	// contains filtered or unexported fields
}

func NewDiscoveryEngine

func NewDiscoveryEngine(p *policy.Policy) *DiscoveryEngine

func (*DiscoveryEngine) Discover

func (e *DiscoveryEngine) Discover(root string) ([]domain.Submission, error)

Discover finds all leaf folders that contain at least one .c file.

type Executor

type Executor struct {
	// contains filtered or unexported fields
}

func NewExecutorWithOptions

func NewExecutorWithOptions(p *policy.Policy, binaryDir string, shortNames bool) *Executor

func (*Executor) Execute

func (e *Executor) Execute(ctx context.Context, sub domain.Submission, args []string, input string) domain.ExecuteResult

func (*Executor) ExecuteMultiProcess

func (e *Executor) ExecuteMultiProcess(ctx context.Context, sub domain.Submission, onUpdate func(*domain.MultiProcessResult)) *domain.MultiProcessResult

func (*Executor) ExecuteMultiProcessScenario

func (e *Executor) ExecuteMultiProcessScenario(ctx context.Context, sub domain.Submission, scenario policy.MultiProcessScenario, onUpdate func(*domain.MultiProcessResult)) *domain.MultiProcessResult

func (*Executor) ExecuteTestCase

func (e *Executor) ExecuteTestCase(ctx context.Context, sub domain.Submission, tc policy.TestCase) domain.ExecuteResult

func (*Executor) GetBinaryPath

func (e *Executor) GetBinaryPath(sub domain.Submission) string

func (*Executor) GetSubmissionBinaryDir

func (e *Executor) GetSubmissionBinaryDir(sub domain.Submission) string

func (*Executor) HasMultiProcess

func (e *Executor) HasMultiProcess() bool

type Runner

type Runner struct {
	// contains filtered or unexported fields
}

Runner orchestrates the full grading pipeline.

func NewRunner

func NewRunner(p *policy.Policy, opts ...CompileOption) (*Runner, error)

NewRunner creates a new runner with all engines.

func (*Runner) Cleanup

func (r *Runner) Cleanup() error

Cleanup cleans up resources (temp directories).

func (*Runner) Run

func (r *Runner) Run(ctx context.Context, root string, callbacks RunnerCallbacks) (*domain.RunReport, error)

Run executes the full grading pipeline.

type RunnerCallbacks

type RunnerCallbacks struct {
	OnDiscoveryComplete func(submissions []domain.Submission)
	OnCompileComplete   func(sub domain.Submission, result domain.CompileResult)
	OnScanComplete      func(sub domain.Submission, result domain.ScanResult)
	OnAllComplete       func(report domain.RunReport)
}

RunnerCallbacks allows the TUI to receive progress updates.

type ScanEngine

type ScanEngine struct {
	// contains filtered or unexported fields
}

ScanEngine scans source files for banned function calls using tree-sitter.

func NewScanEngine

func NewScanEngine(p *policy.Policy) *ScanEngine

NewScanEngine creates a new scan engine.

func (*ScanEngine) ScanAll

func (e *ScanEngine) ScanAll(submissions []domain.Submission, onComplete func(domain.Submission, domain.ScanResult)) []domain.ScanResult

ScanAll scans all submissions in parallel.

Jump to

Keyboard shortcuts

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