# general task configuration task.name = "hw7 ex2" # task name task.type = "homework/h7/e2" # remove this task type later release.deadline = 2024-12-30 23:59:59+08:00 release.stages = [ "compile" ] [[stages]] name = "Compilation" command = "./tools/compile" # eg. script running cmake commands files.import = [ "tools/compile" ] files.export = [ "h7/build/ex2", "h7/build/ex2-asan", "h7/build/ex2-ubsan", "h7/build/ex2-msan", "h7/build/compile_commands.json" ] score = 1 # compile parsers parsers = [ "result-detail", "result-status" ] result-status.comment = "Congratulations! Your code compiled successfully." result-detail.exitstatus = true result-detail.stderr = true result-detail.time = false result-detail.mem = false result-status.forcequit = true [[stages]] name = "[cq] Filelength" command = "./tools/filelength 400 300 *.cpp *.h" files.import = [ "tools/filelength" ] parsers = [ "keyword", "result-detail" ] keyword.keyword = [ "max", "recommended"] keyword.weight = [ 20, 10 ] result-detail.exitstatus = true result-detail.stdout = true result-detail.time = false result-detail.mem = false [[stages]] name = "[cq] Clang-tidy" command = "run-clang-tidy-18 -header-filter=.* -quiet -load=/usr/local/lib/libcodequality.so -p h7/build h7/ex2.cpp" files.import = [ "tests/homework/h7/.clang-tidy", "h7/build/compile_commands.json" ] limit.stdout = 65 parsers = [ "clangtidy", "result-detail" ] clangtidy.keyword = [ "codequality-unchecked-malloc-result", "codequality-no-global-variables", "codequality-no-header-guard", "codequality-no-fflush-stdin", "readability-function-size", "readability-duplicate-include", "readability-identifier-naming", "readability-redundant", "readability-misleading-indentation", "readability-misplaced-array-index", "cppcoreguidelines-init-variables", "bugprone-suspicious-string-compare", "google-global-names-in-headers", "clang-diagnostic", "clang-analyzer", "misc", "performance", "portability" ] clangtidy.weight = [ 5, 20, 20, 20, 10, 5, 5, 5, 15, 5, 5, 5, 5, 5, 5, 5, 5, 5] result-detail.exitstatus = true result-detail.stdout = true result-detail.time = false result-detail.mem = false [[stages]] name = "[cq] Cppcheck" command = "cppcheck --template='{\"file\":\"{file}\",\"line\":{line}, \"column\":{column}, \"severity\":\"{severity}\", \"message\":\"{message}\", \"id\":\"{id}\"}' --force --enable=all --suppress=missingIncludeSystem --quiet h7/ex2.cpp" limit.stderr = 65 parsers = [ "cppcheck", "result-detail" ] cppcheck.keyword = ["error", "warning", "portability", "performance", "style"] cppcheck.weight = [15, 5, 5, 5, 5] result-detail.exitstatus = true result-detail.stderr = true result-detail.time = false result-detail.mem = false [[stages]] name = "[cq] Cpplint" command = "cpplint --linelength=120 --filter=-legal,-readability/casting,-whitespace,-runtime/printf,-runtime/threadsafe_fn,-runtime/int,-readability/todo,-build/include_subdir,-build/header_guard,-build/include_what_you_use --recursive --exclude=build h7/ex2.cpp" limit.stdout = 65 parsers = [ "cpplint", "result-detail" ] cpplint.keyword = [ "runtime", "readability", "build" ] cpplint.weight = [ 5, 20, 10] result-detail.exitstatus = true result-detail.stderr = true result-detail.time = false result-detail.mem = false [[stages]] name = "[joj] ex2-asan" group = "run" command="./h7/build/ex2-asan -a" files.import = [ "h7/build/ex2-asan" ] limit.mem = 91224961 parsers = [ "diff", "result-detail" ] result-detail.exitstatus = true result-detail.stderr = true # will be removed as long as the name is fixed case0.diff.output.score = 5 case0.limit.cpu = 1 case0.limit.mem = 91224961 case0.diff.output.ignorespaces = true #case0.limit.stdout = 8 #case0.command = "./h7/build/ex2" case0.in = "case0.in" case1.diff.output.score = 5 case1.limit.cpu = 1 case1.limit.mem = 91224961 case1.diff.output.ignorespaces = true #case1.limit.stdout = 8 #case1.command = "./h7/build/ex2" case1.in = "case1.in" case2.diff.output.score = 5 case2.limit.cpu = 1 case2.limit.mem = 91224961 case2.diff.output.ignorespaces = true #case2.limit.stdout = 8 #case2.command = "./h7/build/ex2" case2.in = "case2.in" case3.diff.output.score = 5 case3.limit.cpu = 1 case3.limit.mem = 91224961 case3.diff.output.ignorespaces = true #case3.limit.stdout = 8 #case3.command = "./h7/build/ex2" case3.in = "case3.in" case4.diff.output.score = 10 case4.limit.cpu = 1 case4.limit.mem = 91224961 case4.diff.output.ignorespaces = true #case4.limit.stdout = 8 #case4.command = "./h7/build/ex2" case4.in = "case4.in" case5.diff.output.score = 10 case5.limit.cpu = 1 case5.limit.mem = 91224961 case5.diff.output.ignorespaces = true #case5.limit.stdout = 8 #case5.command = "./h7/build/ex2" case5.in = "case5.in" case6.diff.output.score = 15 case6.limit.cpu = 1 case6.limit.mem = 91224961 case6.diff.output.ignorespaces = true #case6.limit.stdout = 8 #case6.command = "./h7/build/ex2" case6.in = "case6.in" case7.diff.output.score = 15 case7.limit.cpu = 1 case7.limit.mem = 91224961 case7.diff.output.ignorespaces = true #case7.limit.stdout = 8 #case7.command = "./h7/build/ex2" case7.in = "case7.in" case8.diff.output.score = 15 case8.limit.cpu = 1 case8.limit.mem = 91224961 case8.diff.output.ignorespaces = true #case8.limit.stdout = 8 #case8.command = "./h7/build/ex2" case8.in = "case8.in" case9.diff.output.score = 15 case9.limit.cpu = 1 case9.limit.mem = 91224961 case9.diff.output.ignorespaces = true #case9.limit.stdout = 8 #case9.command = "./h7/build/ex2" case9.in = "case9.in" [[stages]] name = "[joj] ex2-msan" group = "joj" command="./h7/build/ex2-msan -a" files.import = [ "h7/build/ex2-msan" ] limit.mem = 91224961 parsers = [ "diff", "result-detail" ] result-detail.exitstatus = true result-detail.stderr = true # will be removed as long as the name is fixed case0.diff.output.score = 5 case0.limit.cpu = 1 case0.limit.mem = 91224961 case0.diff.output.ignorespaces = true #case0.limit.stdout = 8 #case0.command = "./h7/build/ex2" case0.in = "case0.in" case1.diff.output.score = 5 case1.limit.cpu = 1 case1.limit.mem = 91224961 case1.diff.output.ignorespaces = true #case1.limit.stdout = 8 #case1.command = "./h7/build/ex2" case1.in = "case1.in" case2.diff.output.score = 5 case2.limit.cpu = 1 case2.limit.mem = 91224961 case2.diff.output.ignorespaces = true #case2.limit.stdout = 8 #case2.command = "./h7/build/ex2" case2.in = "case2.in" case3.diff.output.score = 5 case3.limit.cpu = 1 case3.limit.mem = 91224961 case3.diff.output.ignorespaces = true #case3.limit.stdout = 8 #case3.command = "./h7/build/ex2" case3.in = "case3.in" case4.diff.output.score = 10 case4.limit.cpu = 1 case4.limit.mem = 91224961 case4.diff.output.ignorespaces = true #case4.limit.stdout = 8 #case4.command = "./h7/build/ex2" case4.in = "case4.in" case5.diff.output.score = 10 case5.limit.cpu = 1 case5.limit.mem = 91224961 case5.diff.output.ignorespaces = true #case5.limit.stdout = 8 #case5.command = "./h7/build/ex2" case5.in = "case5.in" case6.diff.output.score = 15 case6.limit.cpu = 1 case6.limit.mem = 91224961 case6.diff.output.ignorespaces = true #case6.limit.stdout = 8 #case6.command = "./h7/build/ex2" case6.in = "case6.in" case7.diff.output.score = 15 case7.limit.cpu = 1 case7.limit.mem = 91224961 case7.diff.output.ignorespaces = true #case7.limit.stdout = 8 #case7.command = "./h7/build/ex2" case7.in = "case7.in" case8.diff.output.score = 15 case8.limit.cpu = 1 case8.limit.mem = 91224961 case8.diff.output.ignorespaces = true #case8.limit.stdout = 8 #case8.command = "./h7/build/ex2" case8.in = "case8.in" case9.diff.output.score = 15 case9.limit.cpu = 1 case9.limit.mem = 91224961 case9.diff.output.ignorespaces = true #case9.limit.stdout = 8 #case9.command = "./h7/build/ex2" case9.in = "case9.in" [[stages]] name = "[joj] ex2-ubsan" command="./h7/build/ex2-ubsan -a" files.import = [ "h7/build/ex2-ubsan" ] parsers = [ "diff", "result-detail" ] result-detail.exitstatus = true result-detail.stderr = true # will be removed as long as the name is fixed case0.diff.output.score = 5 case0.limit.cpu = 1 case0.limit.mem = 91224961 case0.diff.output.ignorespaces = true #case0.limit.stdout = 8 #case0.command = "./h7/build/ex2" case0.in = "case0.in" case1.diff.output.score = 5 case1.limit.cpu = 1 case1.limit.mem = 91224961 case1.diff.output.ignorespaces = true #case1.limit.stdout = 8 #case1.command = "./h7/build/ex2" case1.in = "case1.in" case2.diff.output.score = 5 case2.limit.cpu = 1 case2.limit.mem = 91224961 case2.diff.output.ignorespaces = true #case2.limit.stdout = 8 #case2.command = "./h7/build/ex2" case2.in = "case2.in" case3.diff.output.score = 5 case3.limit.cpu = 1 case3.limit.mem = 91224961 case3.diff.output.ignorespaces = true #case3.limit.stdout = 8 #case3.command = "./h7/build/ex2" case3.in = "case3.in" case4.diff.output.score = 10 case4.limit.cpu = 1 case4.limit.mem = 91224961 case4.diff.output.ignorespaces = true #case4.limit.stdout = 8 #case4.command = "./h7/build/ex2" case4.in = "case4.in" case5.diff.output.score = 10 case5.limit.cpu = 1 case5.limit.mem = 91224961 case5.diff.output.ignorespaces = true #case5.limit.stdout = 8 #case5.command = "./h7/build/ex2" case5.in = "case5.in" case6.diff.output.score = 15 case6.limit.cpu = 1 case6.limit.mem = 91224961 case6.diff.output.ignorespaces = true #case6.limit.stdout = 8 #case6.command = "./h7/build/ex2" case6.in = "case6.in" case7.diff.output.score = 15 case7.limit.cpu = 1 case7.limit.mem = 91224961 case7.diff.output.ignorespaces = true #case7.limit.stdout = 8 #case7.command = "./h7/build/ex2" case7.in = "case7.in" case8.diff.output.score = 15 case8.limit.cpu = 1 case8.limit.mem = 91224961 case8.diff.output.ignorespaces = true #case8.limit.stdout = 8 #case8.command = "./h7/build/ex2" case8.in = "case8.in" case9.diff.output.score = 15 case9.limit.cpu = 1 case9.limit.mem = 91224961 case9.diff.output.ignorespaces = true #case9.limit.stdout = 8 #case9.command = "./h7/build/ex2" case9.in = "case9.in" [[stages]] name = "[joj] ex2" group = "joj" command="./h7/build/ex2" files.import = [ "h7/build/ex2" ] score = 10 parsers = [ "diff", "result-detail" ] result-detail.exitstatus = true result-detail.stderr = true result-status.forcequit = true # will be removed as long as the name is fixed case0.diff.output.score = 5 case0.limit.cpu = 1 case0.limit.mem = 91224961 case0.diff.output.ignorespaces = true #case0.limit.stdout = 8 #case0.command = "./h7/build/ex2" case0.in = "case0.in" case1.diff.output.score = 5 case1.limit.cpu = 1 case1.limit.mem = 91224961 case1.diff.output.ignorespaces = true #case1.limit.stdout = 8 #case1.command = "./h7/build/ex2" case1.in = "case1.in" case2.diff.output.score = 5 case2.limit.cpu = 1 case2.limit.mem = 91224961 case2.diff.output.ignorespaces = true #case2.limit.stdout = 8 #case2.command = "./h7/build/ex2" case2.in = "case2.in" case3.diff.output.score = 5 case3.limit.cpu = 1 case3.limit.mem = 91224961 case3.diff.output.ignorespaces = true #case3.limit.stdout = 8 #case3.command = "./h7/build/ex2" case3.in = "case3.in" case4.diff.output.score = 10 case4.limit.cpu = 1 case4.limit.mem = 91224961 case4.diff.output.ignorespaces = true #case4.limit.stdout = 8 #case4.command = "./h7/build/ex2" case4.in = "case4.in" case5.diff.output.score = 10 case5.limit.cpu = 1 case5.limit.mem = 91224961 case5.diff.output.ignorespaces = true #case5.limit.stdout = 8 #case5.command = "./h7/build/ex2" case5.in = "case5.in" case6.diff.output.score = 15 case6.limit.cpu = 1 case6.limit.mem = 91224961 case6.diff.output.ignorespaces = true #case6.limit.stdout = 8 #case6.command = "./h7/build/ex2" case6.in = "case6.in" case7.diff.output.score = 15 case7.limit.cpu = 1 case7.limit.mem = 91224961 case7.diff.output.ignorespaces = true #case7.limit.stdout = 8 #case7.command = "./h7/build/ex2" case7.in = "case7.in" case8.diff.output.score = 15 case8.limit.cpu = 1 case8.limit.mem = 91224961 case8.diff.output.ignorespaces = true #case8.limit.stdout = 8 #case8.command = "./h7/build/ex2" case8.in = "case8.in" case9.diff.output.score = 15 case9.limit.cpu = 1 case9.limit.mem = 91224961 case9.diff.output.ignorespaces = true #case9.limit.stdout = 8 #case9.command = "./h7/build/ex2" case9.in = "case9.in"