Documentation
¶
Index ¶
- Constants
- func CompareFiles(fileA, fileB string, fpA, fpB domain.FileFingerprint, cfg domain.CompareConfig) domain.PlagiarismResult
- func ComputeAIDetectionForProcess(submissions []domain.Submission, srcFile string, dict *aipkg.Dictionary, ...) (domain.AIDetectionReport, error)
- func ComputeSimilarityForProcess(submissions []domain.Submission, srcFile string, cfg domain.CompareConfig) ([]domain.SimilarityPairResult, error)
- func FingerprintFile(path string, cfg domain.CompareConfig) (domain.FileFingerprint, error)
- type CompileEngine
- type CompileOption
- type DiscoveryEngine
- type Executor
- func (e *Executor) Execute(ctx context.Context, sub domain.Submission, args []string, input string) domain.ExecuteResult
- func (e *Executor) ExecuteMultiProcess(ctx context.Context, sub domain.Submission, ...) *domain.MultiProcessResult
- func (e *Executor) ExecuteMultiProcessScenario(ctx context.Context, sub domain.Submission, ...) *domain.MultiProcessResult
- func (e *Executor) ExecuteTestCase(ctx context.Context, sub domain.Submission, tc policy.TestCase) domain.ExecuteResult
- func (e *Executor) GetBinaryPath(sub domain.Submission) string
- func (e *Executor) GetSubmissionBinaryDir(sub domain.Submission) string
- func (e *Executor) HasMultiProcess() bool
- type Runner
- type RunnerCallbacks
- type ScanEngine
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 (*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 ¶
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.
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.
Click to show internal directories.
Click to hide internal directories.