aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJoey Jiao <quic_jiangenj@quicinc.com>2024-09-05 10:41:33 +0800
committerAleksandr Nogikh <nogikh@google.com>2024-09-05 08:31:53 +0000
commit36ae3a2636d844ca4845170893f56c1eddcdd76f (patch)
treeaa5f75756d82ec3b4c4b6502ba769d35a7cb2657 /tools
parentad0d6f9a057efc9916c49678e2e62407d9a5ac0b (diff)
tools/syz-cover: use -exports to select which report to generate
exports default to generate cover html, and all means cover,subsystem,module,funccover,rawcover,rawcoverfiles
Diffstat (limited to 'tools')
-rw-r--r--tools/syz-cover/syz-cover.go56
1 files changed, 29 insertions, 27 deletions
diff --git a/tools/syz-cover/syz-cover.go b/tools/syz-cover/syz-cover.go
index e6ad8cdec..60cee100f 100644
--- a/tools/syz-cover/syz-cover.go
+++ b/tools/syz-cover/syz-cover.go
@@ -48,8 +48,6 @@ var (
flagConfig = flag.String("config", "", "configuration file")
flagModules = flag.String("modules", "",
"modules JSON info obtained from /modules (optional)")
- flagExportLineJSON = flag.String("json", "", "export coverage data with source line info in json format (optional)")
- flagExportJSONL = flag.String("jsonl", "", "export jsonl coverage data (optional)")
flagNsHeatmap = flag.String("heatmap", "", "generate namespace heatmap")
flagNsHeatmapGroupBy = flag.String("group-by", "dir", "dir or subsystem")
flagDateFrom = flag.String("from",
@@ -64,6 +62,9 @@ var (
flagNamespace = flag.String("namespace", "upstream", "[optional] used by -for-file")
flagDebug = flag.Bool("debug", false, "[optional] enables detailed output")
flagSourceCommit = flag.String("source-commit", "", "[optional] filter input commit")
+ flagExports = flag.String("exports", "cover",
+ "[optional] comma separated list of exports for which we want to generate coverage, "+
+ "possible values are: cover, subsystem, module, funccover, json, jsonl, rawcover, rawcoverfiles, all")
)
func parseDates() (civil.Date, civil.Date) {
@@ -160,32 +161,33 @@ func main() {
Progs: progs,
}
- if *flagExportLineJSON != "" {
- doReport(params, *flagExportLineJSON, rg.DoLineJSON)
- return
- }
- if *flagExportJSONL != "" {
- doReport(params, *flagExportJSONL, rg.DoCoverJSONL)
- return
+ if *flagExports == "all" {
+ *flagExports = "cover,subsystem,module,funccover,rawcover,rawcoverfiles"
+ }
+ exports := strings.Split(*flagExports, ",")
+ for _, export := range exports {
+ log.Logf(1, "start generate %v", export)
+ switch export {
+ case "cover":
+ doReport(params, "syz-cover.html", rg.DoHTML)
+ case "subsystem":
+ doReport(params, "syz-cover-subsystem.html", rg.DoSubsystemCover)
+ case "module":
+ doReport(params, "syz-cover-module.html", rg.DoModuleCover)
+ case "funccover":
+ doReport(params, "syz-cover-funccover.csv", rg.DoFuncCover)
+ case "rawcover":
+ doReport(params, "rawcoverpcs", rg.DoRawCover)
+ case "rawcoverfiles":
+ doReport(params, "rawcoverfiles", rg.DoRawCoverFiles)
+ case "json":
+ doReport(params, "json", rg.DoLineJSON)
+ case "jsonl":
+ doReport(params, "jsonl", rg.DoCoverJSONL)
+ default:
+ tool.Failf("unknown export type: %q", export)
+ }
}
-
- log.Logf(1, "start DoHTML")
- doReport(params, "syz-cover.html", rg.DoHTML)
-
- log.Logf(1, "start DoSubsystemCover")
- doReport(params, "syz-cover-subsystem.html", rg.DoSubsystemCover)
-
- log.Logf(1, "start DoModuleCover")
- doReport(params, "syz-cover-module.html", rg.DoModuleCover)
-
- log.Logf(1, "start DoFuncCover")
- doReport(params, "syz-cover-funccover.csv", rg.DoFuncCover)
-
- log.Logf(1, "start DoRawCover")
- doReport(params, "rawcoverpcs", rg.DoRawCover)
-
- log.Logf(1, "start DoRawCoverFiles")
- doReport(params, "rawcoverfiles", rg.DoRawCoverFiles)
}
func doReport(params cover.HandlerParams, fname string,