docs: full toml sample with full comments

This commit is contained in:
张泊明518370910136 2025-06-30 13:24:15 -04:00 committed by 张泊明518370910136
parent 306785ddb3
commit 16e1dad46e
10 changed files with 246 additions and 44 deletions

View File

View File

View File

View File

View File

View File

View File

View File

View File

@ -167,7 +167,30 @@
"dataSegmentLimit": false, "dataSegmentLimit": false,
"addressSpaceLimit": false "addressSpaceLimit": false
}, },
"cases": [] "cases": [
{
"stdin": {
"src": "/home/tt/.config/joj/full/cases/case0.in"
}
},
{
"stdin": {
"src": "/home/tt/.config/joj/full/cases/case2.in"
},
"cpuLimit": 2000000000,
"memoryLimit": 536870912
},
{
"stdin": {
"src": "/home/tt/.config/joj/full/cases/case1.in"
}
},
{
"stdin": {
"src": "/home/tt/.config/joj/full/other/cases/case3.in"
}
}
]
} }
}, },
"parsers": [ "parsers": [
@ -200,35 +223,125 @@
"name": "keyword", "name": "keyword",
"with": { "with": {
"score": 0, "score": 0,
"matches": [] "matches": [
{
"keywords": [
"aaa"
],
"score": 20
},
{
"keywords": [
"bbb"
],
"score": 10
},
{
"keywords": [
"ccc"
],
"score": 5
}
]
} }
}, },
{ {
"name": "clangtidy", "name": "clangtidy",
"with": { "with": {
"score": 0, "score": 0,
"matches": [] "matches": [
{
"keywords": [
"clang-diagnostic",
"clang-analyzer",
"misc",
"performance",
"portability"
],
"score": 5
}
]
} }
}, },
{ {
"name": "cppcheck", "name": "cppcheck",
"with": { "with": {
"score": 0, "score": 0,
"matches": [] "matches": [
{
"keywords": [
"error"
],
"score": 15
},
{
"keywords": [
"warning",
"portability",
"performance",
"style"
],
"score": 5
}
]
} }
}, },
{ {
"name": "cpplint", "name": "cpplint",
"with": { "with": {
"score": 0, "score": 0,
"matches": [] "matches": [
{
"keywords": [
"runtime"
],
"score": 5
},
{
"keywords": [
"readability"
],
"score": 20
},
{
"keywords": [
"build"
],
"score": 10
}
]
} }
}, },
{ {
"name": "elf", "name": "elf",
"with": { "with": {
"score": 0, "score": 0,
"matches": [] "matches": [
{
"keywords": [
"Parentheses"
],
"score": 100
},
{
"keywords": [
"Length"
],
"score": 300
},
{
"keywords": [
"Arity"
],
"score": 50
},
{
"keywords": [
"Repetitive"
],
"score": 80
}
]
} }
}, },
{ {
@ -243,7 +356,68 @@
"name": "diff", "name": "diff",
"with": { "with": {
"name": "diff", "name": "diff",
"cases": [] "cases": [
{
"outputs": [
{
"score": 5,
"filename": "stdout",
"answerPath": "/home/tt/.config/joj/full/cases/case0.out",
"compareSpace": false,
"alwaysHide": false,
"forceQuitOnDiff": false,
"maxDiffLength": 2048,
"maxDiffLines": 50,
"hideCommonPrefix": false
}
]
},
{
"outputs": [
{
"score": 5,
"filename": "stdout",
"answerPath": "/home/tt/.config/joj/full/cases/case2.out",
"compareSpace": false,
"alwaysHide": false,
"forceQuitOnDiff": false,
"maxDiffLength": 2048,
"maxDiffLines": 50,
"hideCommonPrefix": false
}
]
},
{
"outputs": [
{
"score": 5,
"filename": "stdout",
"answerPath": "/home/tt/.config/joj/full/cases/case1.out",
"compareSpace": false,
"alwaysHide": false,
"forceQuitOnDiff": false,
"maxDiffLength": 2048,
"maxDiffLines": 50,
"hideCommonPrefix": false
}
]
},
{
"outputs": [
{
"score": 5,
"filename": "stdout",
"answerPath": "/home/tt/.config/joj/full/other/cases/case3.out",
"compareSpace": false,
"alwaysHide": false,
"forceQuitOnDiff": false,
"maxDiffLength": 2048,
"maxDiffLines": 50,
"hideCommonPrefix": false
}
]
}
]
} }
} }
] ]

View File

@ -72,62 +72,78 @@ parsers = [
"diff", # diff the output with the expected output "diff", # diff the output with the expected output
] ]
result-status.score = 0 result-status.score = 0 # score added if result status is Accepted, default: 0
result-status.comment = "Congrats! There is a yes.txt file generated!" result-status.comment = "Congrats! There is a yes.txt file generated!" # comment to show if result status is Accepted, default: ""
result-status.force-quit = true result-status.force-quit = true # whether to force quit the stage if result status is not Accepted, default: true
result-detail.cpu-time = true result-detail.cpu-time = true # show CPU time, default: true
result-detail.time = true result-detail.mem = true # show memory usage, default: true
result-detail.mem = true result-detail.time = true # show wall-clock time, default: true
result-detail.stdout = false result-detail.stdout = false # show stdout content, default: false
result-detail.stderr = false result-detail.stderr = false # show stderr content, default: false
result-detail.exit-status = true result-detail.exit-status = true # show exit status, default: true
result-detail.proc-peak = false result-detail.proc-peak = false # show peak process count, default: false
result-detail.error = false result-detail.error = false # show error message, default: false
result-detail.code-block = true result-detail.code-block = true # show result in a code block, default: true
result-detail.max-length = 2048 result-detail.max-length = 2048 # maximum length of the stdout/stderr content to show, longer content will be truncated, default: 2048
keyword.score = 0 # explanation of the following config:
keyword.keyword = [] # if the output is "aaa bbb ccc aaa", then the score will be: 0 - 20 - 10 - 5 - 20 = -55
keyword.weight = [] keyword.score = 0 # base score, default: 0
keyword.keyword = [ "aaa", "bbb", "ccc" ] # list of keywords to match in stdout & stderr
keyword.weight = [ 20, 10, 5 ] # weight for each keyword, will be deducted for each keyword found
# similar to keyword, but will only match check name in clang-tidy
clangtidy.score = 0 clangtidy.score = 0
clangtidy.keyword = [] clangtidy.keyword = [ "clang-diagnostic", "clang-analyzer", "misc", "performance", "portability" ]
clangtidy.weight = [] clangtidy.weight = [ 5, 5, 5, 5, 5 ]
# similar to keyword, but will only match record ID & severity in cppcheck
cppcheck.score = 0 cppcheck.score = 0
cppcheck.keyword = [] cppcheck.keyword = [ "error", "warning", "portability", "performance", "style" ]
cppcheck.weight = [] cppcheck.weight = [ 15, 5, 5, 5, 5 ]
# similar to keyword, but will only match category in cpplint
cpplint.score = 0 cpplint.score = 0
cpplint.keyword = [] cpplint.keyword = [ "runtime", "readability", "build" ]
cpplint.weight = [] cpplint.weight = [ 5, 20, 10 ]
# similar to keyword, but will only match kind in elf
elf.score = 0 elf.score = 0
elf.keyword = [] elf.keyword = [ "Parentheses", "Length", "Arity", "Repetitive" ]
elf.weight = [] elf.weight = [ 100, 300, 50, 80 ]
dummy.score = 0 # dummy parser, it will not parse the result from the command, always give the same output
dummy.comment = "" dummy.score = 0 # score to add, default: 0
dummy.force-quit = false dummy.comment = "" # comment to show, default: ""
dummy.force-quit = false # whether to force quit the stage, default: false
diff.score = 5 diff.score = 5 # default score for each case, default: 5
diff.ignore-spaces = true diff.ignore-spaces = true # ignore spaces in diff, default: true
diff.hide = false diff.hide = false # whether to hide the diff output, default: false
diff.force-quit = false diff.force-quit = false # whether to force quit the stage if there is a difference, default: false
diff.max-length = 2048 diff.max-length = 2048 # maximum length of the diff output, longer content will be truncated, default: 2048
diff.max-lines = 50 diff.max-lines = 50 # maximum number of lines to show in the diff output, longer content will be truncated, default: 50
diff.hide-common-prefix = false diff.hide-common-prefix = false # whether to hide the common prefix in the diff output, thus the first different line will be shown, default: false
# override for cases # override when there are more than 1 cases in this stage
# for quality check stages, there is only 1 case so this is not needed
# previous fields without `case0.` prefix will be used as default for all cases
# and for run stages, multiple cases will be run with different inputs and outputs
# specific cases can be overridden here with these `case<x>.` prefix
# if no `case<x>.in` and `case<x>.out` is specified here,
# it will look for files with name `case<x>.in` and `case<x>.out`
# recursively in the directory of this toml file, and set them as corresponding
# `case<x>.in` and `case<x>.out` automatically, use the default value defined above
case0.in = "cases/case0.in" # file will be used as stdin, relative to this toml file
case0.out = "cases/case0.out" # file will be used to run diff with stdout, relative to this toml file
# the following fields just show the default values
case0.env = [] case0.env = []
case0.command = "" case0.command = ""
case0.files.import = [] case0.files.import = []
case0.files.import-map = {} case0.files.import-map = {}
case0.files.export = [] case0.files.export = []
case0.copy-in-cwd = true case0.copy-in-cwd = true
case0.in = ""
case0.out = ""
case0.limit.cpu = "1s" case0.limit.cpu = "1s"
case0.limit.mem = "256m" case0.limit.mem = "256m"
case0.limit.time = "2s" case0.limit.time = "2s"
@ -141,3 +157,15 @@ case0.diff.force-quit = false
case0.diff.max-length = 2048 case0.diff.max-length = 2048
case0.diff.max-lines = 50 case0.diff.max-lines = 50
case0.diff.hide-common-prefix = false case0.diff.hide-common-prefix = false
# the following 2 lines can be omitted as they can be detected automatically
# case1.in = "cases/case1.in"
# case1.out = "cases/case1.out"
# and you can only override part of the fields
case2.limit.cpu = "2s" # override CPU time limit for case2
case2.limit.mem = "512m" # override memory limit for case2
# also, you can put .in and .out files in other directories
# case3.in = "other/cases/case3.in"
# case3.out = "other/cases/case3.out"