diff --git a/go.mod b/go.mod index 98992f14..50f3fbe6 100644 --- a/go.mod +++ b/go.mod @@ -5,12 +5,12 @@ go 1.24.2 require ( github.com/chzyer/readline v1.5.1 github.com/gin-gonic/gin v1.10.0 + github.com/go-analyze/charts v0.5.21 github.com/google/uuid v1.6.0 github.com/jung-kurt/gofpdf v1.16.2 github.com/mattn/go-shellwords v1.0.12 github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de github.com/shopspring/decimal v1.4.0 - github.com/wcharczuk/go-chart v2.0.1+incompatible github.com/xuri/excelize/v2 v2.9.0 golang.org/x/crypto v0.37.0 golang.org/x/text v0.24.0 @@ -22,12 +22,14 @@ require ( github.com/cloudwego/base64x v0.1.5 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/gin-contrib/sse v1.1.0 // indirect + github.com/go-analyze/bulk v0.1.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/goccy/go-json v0.10.5 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/kr/text v0.2.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect @@ -43,7 +45,6 @@ require ( require ( github.com/akedrou/textdiff v0.0.0-20230423230343-2ebdcebdccc1 - github.com/blend/go-sdk v1.20220411.3 // indirect github.com/bytedance/sonic v1.13.2 // indirect github.com/gabriel-vasile/mimetype v1.4.8 // indirect github.com/go-playground/validator/v10 v10.26.0 // indirect @@ -53,7 +54,7 @@ require ( github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/phpdave11/gofpdi v1.0.14 // indirect github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 github.com/ugorji/go/codec v1.2.12 // indirect github.com/xuri/efp v0.0.0-20250227110027-3491fafc2b79 // indirect github.com/xuri/nfp v0.0.0-20250226145837-86d5fc24b2ba // indirect diff --git a/go.sum b/go.sum index 0b290af6..750abd6c 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,5 @@ github.com/akedrou/textdiff v0.0.0-20230423230343-2ebdcebdccc1 h1:XfKKiQL7irIGI7nfu4a6IKhrgUHvKwhH/AnuHgZy/+U= github.com/akedrou/textdiff v0.0.0-20230423230343-2ebdcebdccc1/go.mod h1:PJwvxBpzqjdeomc0r8Hgc+xJC7k6z+k371tffCGXR2M= -github.com/blend/go-sdk v1.20220411.3 h1:GFV4/FQX5UzXLPwWV03gP811pj7B8J2sbuq+GJQofXc= -github.com/blend/go-sdk v1.20220411.3/go.mod h1:7lnH8fTi6U4i1fArEXRyOIY2E1X4MALg09qsQqY1+ak= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= @@ -18,6 +16,7 @@ github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCy github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -27,6 +26,10 @@ github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM= github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/go-analyze/bulk v0.1.0 h1:GJb6jMJfQZR5oTp/VgUT5cc0Gl4WZI33Imin37Ry4FM= +github.com/go-analyze/bulk v0.1.0/go.mod h1:COn1t9AN7JJukKJSJ4YAx1fjTGZET9nbnogIIDxR3lk= +github.com/go-analyze/charts v0.5.21 h1:kzsfvPiVvAPcNLtxUN4Rj8vXqz8sl3TiZrTOa1hcQfk= +github.com/go-analyze/charts v0.5.21/go.mod h1:zukR151ymTK87fxZbnW0KquNGtS0QlRkV+LCDEbbHgE= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= @@ -55,6 +58,10 @@ github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa02 github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= @@ -102,14 +109,12 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/wcharczuk/go-chart v2.0.1+incompatible h1:0pz39ZAycJFF7ju/1mepnk26RLVLBCWz1STcD3doU0A= -github.com/wcharczuk/go-chart v2.0.1+incompatible/go.mod h1:PF5tmL4EIx/7Wf+hEkpCqYi5He4u90sw+0+6FhrryuE= github.com/xuri/efp v0.0.0-20250227110027-3491fafc2b79 h1:78nKszZqigiBRBVcoe/AuPzyLTWW5B+ltBaUX1rlIXA= github.com/xuri/efp v0.0.0-20250227110027-3491fafc2b79/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= github.com/xuri/excelize/v2 v2.9.0 h1:1tgOaEq92IOEumR1/JfYS/eR0KHOCsRv/rYXXh6YJQE= @@ -134,8 +139,9 @@ golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/report/report.go b/pkg/report/report.go index 0664237c..b4e5216e 100644 --- a/pkg/report/report.go +++ b/pkg/report/report.go @@ -16,8 +16,8 @@ import ( "github.com/jung-kurt/gofpdf" "github.com/jung-kurt/gofpdf/contrib/gofpdi" "github.com/threagile/threagile/pkg/types" - "github.com/wcharczuk/go-chart" - "github.com/wcharczuk/go-chart/drawing" + chart "github.com/go-analyze/charts/chartdraw" + "github.com/go-analyze/charts/chartdraw/drawing" ) const fontSizeHeadline, fontSizeHeadlineSmall, fontSizeBody, fontSizeSmall, fontSizeVerySmall = 20, 16, 12, 9, 7 @@ -910,28 +910,33 @@ func (r *pdfReporter) createManagementSummary(parsedModel *types.Model, tempFold {Value: float64(countLow), //Label: strconv.Itoa(countLow) + " Low", Style: chart.Style{ FillColor: makeColor(rgbHexColorLowRisk()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorLowRisk()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorLowRisk()), + FontSize: 65}}}, {Value: float64(countMedium), //Label: strconv.Itoa(countMedium) + " Medium", Style: chart.Style{ FillColor: makeColor(rgbHexColorMediumRisk()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorMediumRisk()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorMediumRisk()), + FontSize: 65}}}, {Value: float64(countElevated), //Label: strconv.Itoa(countElevated) + " Elevated", Style: chart.Style{ FillColor: makeColor(rgbHexColorElevatedRisk()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorElevatedRisk()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorElevatedRisk()), + FontSize: 65}}}, {Value: float64(countHigh), //Label: strconv.Itoa(countHigh) + " High", Style: chart.Style{ FillColor: makeColor(rgbHexColorHighRisk()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorHighRisk()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorHighRisk()), + FontSize: 65}}}, {Value: float64(countCritical), //Label: strconv.Itoa(countCritical) + " Critical", Style: chart.Style{ FillColor: makeColor(rgbHexColorCriticalRisk()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorCriticalRisk()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorCriticalRisk()), + FontSize: 65}}}, }, } @@ -943,33 +948,39 @@ func (r *pdfReporter) createManagementSummary(parsedModel *types.Model, tempFold {Value: float64(countStatusFalsePositive), //Label: strconv.Itoa(countStatusFalsePositive) + " False Positive", Style: chart.Style{ FillColor: makeColor(rgbHexColorRiskStatusFalsePositive()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorRiskStatusFalsePositive()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorRiskStatusFalsePositive()), + FontSize: 65}}}, {Value: float64(countStatusMitigated), //Label: strconv.Itoa(countStatusMitigated) + " Mitigated", Style: chart.Style{ FillColor: makeColor(rgbHexColorRiskStatusMitigated()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorRiskStatusMitigated()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorRiskStatusMitigated()), + FontSize: 65}}}, {Value: float64(countStatusInProgress), //Label: strconv.Itoa(countStatusInProgress) + " InProgress", Style: chart.Style{ FillColor: makeColor(rgbHexColorRiskStatusInProgress()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorRiskStatusInProgress()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorRiskStatusInProgress()), + FontSize: 65}}}, {Value: float64(countStatusAccepted), //Label: strconv.Itoa(countStatusAccepted) + " Accepted", Style: chart.Style{ FillColor: makeColor(rgbHexColorRiskStatusAccepted()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorRiskStatusAccepted()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorRiskStatusAccepted()), + FontSize: 65}}}, {Value: float64(countStatusInDiscussion), //Label: strconv.Itoa(countStatusInDiscussion) + " InDiscussion", Style: chart.Style{ FillColor: makeColor(rgbHexColorRiskStatusInDiscussion()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorRiskStatusInDiscussion()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorRiskStatusInDiscussion()), + FontSize: 65}}}, {Value: float64(countStatusUnchecked), //Label: strconv.Itoa(countStatusUnchecked) + " Unchecked", Style: chart.Style{ FillColor: makeColor(RgbHexColorRiskStatusUnchecked()).WithAlpha(98), - //FontColor: makeColor(RgbHexColorRiskStatusUnchecked()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(RgbHexColorRiskStatusUnchecked()), + FontSize: 65}}}, }, } @@ -1021,8 +1032,8 @@ func (r *pdfReporter) createRiskMitigationStatus(parsedModel *types.Model, tempF stackedBarChartRiskTracking := chart.StackedBarChart{ Width: 4000, //Height: 2500, - XAxis: chart.Style{Show: false, FontSize: 26, TextVerticalAlign: chart.TextVerticalAlignBottom}, - YAxis: chart.Style{Show: true, FontSize: 26, TextVerticalAlign: chart.TextVerticalAlignBottom}, + XAxis: chart.Style{Hidden: true, FontStyle: chart.FontStyle{FontSize: 26}, TextVerticalAlign: chart.TextVerticalAlignBottom}, + YAxis: chart.Style{Hidden: false, FontStyle: chart.FontStyle{FontSize: 26}, TextVerticalAlign: chart.TextVerticalAlignBottom}, Bars: []chart.StackedBar{ { Name: types.LowSeverity.Title(), @@ -1200,28 +1211,33 @@ func (r *pdfReporter) createRiskMitigationStatus(parsedModel *types.Model, tempF {Value: float64(countLow), //Label: strconv.Itoa(countLow) + " Low", Style: chart.Style{ FillColor: makeColor(rgbHexColorLowRisk()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorLowRisk()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorLowRisk()), + FontSize: 65}}}, {Value: float64(countMedium), //Label: strconv.Itoa(countMedium) + " Medium", Style: chart.Style{ FillColor: makeColor(rgbHexColorMediumRisk()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorMediumRisk()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorMediumRisk()), + FontSize: 65}}}, {Value: float64(countElevated), //Label: strconv.Itoa(countElevated) + " Elevated", Style: chart.Style{ FillColor: makeColor(rgbHexColorElevatedRisk()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorElevatedRisk()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorElevatedRisk()), + FontSize: 65}}}, {Value: float64(countHigh), //Label: strconv.Itoa(countHigh) + " High", Style: chart.Style{ FillColor: makeColor(rgbHexColorHighRisk()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorHighRisk()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorHighRisk()), + FontSize: 65}}}, {Value: float64(countCritical), //Label: strconv.Itoa(countCritical) + " Critical", Style: chart.Style{ FillColor: makeColor(rgbHexColorCriticalRisk()).WithAlpha(98), - //FontColor: makeColor(rgbHexColorCriticalRisk()), - FontSize: 65}}, + FontStyle: chart.FontStyle{ + //FontColor: makeColor(rgbHexColorCriticalRisk()), + FontSize: 65}}}, }, } @@ -1232,19 +1248,19 @@ func (r *pdfReporter) createRiskMitigationStatus(parsedModel *types.Model, tempF {Value: float64(countBusinessSide), Style: chart.Style{ FillColor: makeColor(rgbHexColorBusiness()).WithAlpha(98), - FontSize: 65}}, + FontStyle: chart.FontStyle{FontSize: 65}}}, {Value: float64(countArchitecture), Style: chart.Style{ FillColor: makeColor(rgbHexColorArchitecture()).WithAlpha(98), - FontSize: 65}}, + FontStyle: chart.FontStyle{FontSize: 65}}}, {Value: float64(countDevelopment), Style: chart.Style{ FillColor: makeColor(rgbHexColorDevelopment()).WithAlpha(98), - FontSize: 65}}, + FontStyle: chart.FontStyle{FontSize: 65}}}, {Value: float64(countOperation), Style: chart.Style{ FillColor: makeColor(rgbHexColorOperation()).WithAlpha(98), - FontSize: 65}}, + FontStyle: chart.FontStyle{FontSize: 65}}}, }, }