diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 15e10bd..0f9b707 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -6,6 +6,9 @@ on: pull_request: branches: [ main ] +env: + GO_VERSION: 1.19.2 + jobs: run: runs-on: ubuntu-latest @@ -17,7 +20,7 @@ jobs: - name: Install Go uses: actions/setup-go@v3 with: - go-version: 1.19.2 + go-version: ${{ env.GO_VERSION }} - name: Go Format run: gofmt -s -w . && git diff --exit-code @@ -38,3 +41,31 @@ jobs: run: go install golang.org/x/vuln/cmd/govulncheck@latest - name: Run govulncheck run: govulncheck ./... + + tests-on-windows: + needs: run + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + + - name: Install Go + uses: actions/setup-go@v3 + with: + go-version: ${{ env.GO_VERSION }} + + - name: Go Test + run: go test -v -race ./... + + tests-on-macos: + needs: run + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + + - name: Install Go + uses: actions/setup-go@v3 + with: + go-version: ${{ env.GO_VERSION }} + + - name: Go Test + run: go test -v -race ./... diff --git a/pkg/analyzer/analyzer_test.go b/pkg/analyzer/analyzer_test.go index 06ea6ce..2b26850 100644 --- a/pkg/analyzer/analyzer_test.go +++ b/pkg/analyzer/analyzer_test.go @@ -8,37 +8,35 @@ import ( "github.com/sashamelentyev/usestdlibvars/pkg/analyzer" ) +var flags = []string{ + analyzer.TimeWeekdayFlag, + analyzer.TimeMonthFlag, + analyzer.TimeLayoutFlag, + analyzer.CryptoHashFlag, + analyzer.RPCDefaultPathFlag, + analyzer.SQLIsolationLevelFlag, + analyzer.TLSSignatureSchemeFlag, + analyzer.ConstantKindFlag, +} + +var pkgs = []string{ + "a/crypto", + "a/http", + "a/rpc", + "a/time", + "a/sql", + "a/tls", + "a/constant", +} + func TestUseStdlibVars(t *testing.T) { a := analyzer.New() - for _, flag := range []string{ - analyzer.TimeWeekdayFlag, - analyzer.TimeMonthFlag, - analyzer.TimeLayoutFlag, - analyzer.CryptoHashFlag, - analyzer.RPCDefaultPathFlag, - analyzer.OSDevNullFlag, - analyzer.SQLIsolationLevelFlag, - analyzer.TLSSignatureSchemeFlag, - analyzer.ConstantKindFlag, - analyzer.SyslogPriorityFlag, - } { + for _, flag := range flags { if err := a.Flags.Set(flag, "true"); err != nil { t.Fatal(err) } } - pkgs := []string{ - "a/crypto", - "a/http", - "a/rpc", - "a/time", - "a/os", - "a/sql", - "a/tls", - "a/constant", - "a/syslog", - } - analysistest.Run(t, analysistest.TestData(), a, pkgs...) } diff --git a/pkg/analyzer/internal/mapping/mapping.go b/pkg/analyzer/internal/mapping/mapping.go index a33a10c..2bd5894 100644 --- a/pkg/analyzer/internal/mapping/mapping.go +++ b/pkg/analyzer/internal/mapping/mapping.go @@ -5,10 +5,8 @@ import ( "crypto/tls" "database/sql" "go/constant" - "log/syslog" "net/http" "net/rpc" - "os" "strconv" "time" ) @@ -165,9 +163,7 @@ var TimeLayout = map[string]string{ time.StampNano: "time.StampNano", } -var OSDevNull = map[string]string{ - os.DevNull: "os.DevNull", -} +var OSDevNull = map[string]string{} var SQLIsolationLevel = map[string]string{ // sql.LevelDefault.String(): "sql.LevelDefault.String()", @@ -204,34 +200,4 @@ var ConstantKind = map[string]string{ constant.Complex.String(): "constant.Complex.String()", } -var SyslogPriority = map[string]string{ - // strconv.Itoa(int(syslog.LOG_EMERG)): "syslog.LOG_EMERG", - strconv.Itoa(int(syslog.LOG_ALERT)): "syslog.LOG_ALERT", - strconv.Itoa(int(syslog.LOG_CRIT)): "syslog.LOG_CRIT", - strconv.Itoa(int(syslog.LOG_ERR)): "syslog.LOG_ERR", - strconv.Itoa(int(syslog.LOG_WARNING)): "syslog.LOG_WARNING", - strconv.Itoa(int(syslog.LOG_NOTICE)): "syslog.LOG_NOTICE", - strconv.Itoa(int(syslog.LOG_INFO)): "syslog.LOG_INFO", - strconv.Itoa(int(syslog.LOG_DEBUG)): "syslog.LOG_DEBUG", - - // strconv.Itoa(int(syslog.LOG_KERN)): "syslog.LOG_KERN", - strconv.Itoa(int(syslog.LOG_USER)): "syslog.LOG_USER", - strconv.Itoa(int(syslog.LOG_MAIL)): "syslog.LOG_MAIL", - strconv.Itoa(int(syslog.LOG_DAEMON)): "syslog.LOG_DAEMON", - strconv.Itoa(int(syslog.LOG_AUTH)): "syslog.LOG_AUTH", - strconv.Itoa(int(syslog.LOG_SYSLOG)): "syslog.LOG_SYSLOG", - strconv.Itoa(int(syslog.LOG_LPR)): "syslog.LOG_LPR", - strconv.Itoa(int(syslog.LOG_NEWS)): "syslog.LOG_NEWS", - strconv.Itoa(int(syslog.LOG_UUCP)): "syslog.LOG_UUCP", - strconv.Itoa(int(syslog.LOG_CRON)): "syslog.LOG_CRON", - strconv.Itoa(int(syslog.LOG_AUTHPRIV)): "syslog.LOG_AUTHPRIV", - strconv.Itoa(int(syslog.LOG_FTP)): "syslog.LOG_FTP", - strconv.Itoa(int(syslog.LOG_LOCAL0)): "syslog.LOG_LOCAL0", - strconv.Itoa(int(syslog.LOG_LOCAL1)): "syslog.LOG_LOCAL1", - strconv.Itoa(int(syslog.LOG_LOCAL2)): "syslog.LOG_LOCAL2", - strconv.Itoa(int(syslog.LOG_LOCAL3)): "syslog.LOG_LOCAL3", - strconv.Itoa(int(syslog.LOG_LOCAL4)): "syslog.LOG_LOCAL4", - strconv.Itoa(int(syslog.LOG_LOCAL5)): "syslog.LOG_LOCAL5", - strconv.Itoa(int(syslog.LOG_LOCAL6)): "syslog.LOG_LOCAL6", - strconv.Itoa(int(syslog.LOG_LOCAL7)): "syslog.LOG_LOCAL7", -} +var SyslogPriority = map[string]string{} diff --git a/pkg/analyzer/internal/mapping/osdevnull.go b/pkg/analyzer/internal/mapping/osdevnull.go new file mode 100644 index 0000000..c75c129 --- /dev/null +++ b/pkg/analyzer/internal/mapping/osdevnull.go @@ -0,0 +1,9 @@ +//go:build unix || (js && wasm) + +package mapping + +import "os" + +func init() { + OSDevNull[os.DevNull] = "os.DevNull" +} diff --git a/pkg/analyzer/internal/mapping/syslogpriority.go b/pkg/analyzer/internal/mapping/syslogpriority.go new file mode 100644 index 0000000..4e6dc5d --- /dev/null +++ b/pkg/analyzer/internal/mapping/syslogpriority.go @@ -0,0 +1,40 @@ +//go:build !windows && !plan9 + +package mapping + +import ( + "log/syslog" + "strconv" +) + +func init() { + // SyslogPriority[strconv.Itoa(int(syslog.LOG_EMERG))] = "syslog.LOG_EMERG" + SyslogPriority[strconv.Itoa(int(syslog.LOG_ALERT))] = "syslog.LOG_ALERT" + SyslogPriority[strconv.Itoa(int(syslog.LOG_CRIT))] = "syslog.LOG_CRIT" + SyslogPriority[strconv.Itoa(int(syslog.LOG_ERR))] = "syslog.LOG_ERR" + SyslogPriority[strconv.Itoa(int(syslog.LOG_WARNING))] = "syslog.LOG_WARNING" + SyslogPriority[strconv.Itoa(int(syslog.LOG_NOTICE))] = "syslog.LOG_NOTICE" + SyslogPriority[strconv.Itoa(int(syslog.LOG_INFO))] = "syslog.LOG_INFO" + SyslogPriority[strconv.Itoa(int(syslog.LOG_DEBUG))] = "syslog.LOG_DEBUG" + + // SyslogPriority[strconv.Itoa(int(syslog.LOG_KERN))] = "syslog.LOG_KERN" + SyslogPriority[strconv.Itoa(int(syslog.LOG_USER))] = "syslog.LOG_USER" + SyslogPriority[strconv.Itoa(int(syslog.LOG_MAIL))] = "syslog.LOG_MAIL" + SyslogPriority[strconv.Itoa(int(syslog.LOG_DAEMON))] = "syslog.LOG_DAEMON" + SyslogPriority[strconv.Itoa(int(syslog.LOG_AUTH))] = "syslog.LOG_AUTH" + SyslogPriority[strconv.Itoa(int(syslog.LOG_SYSLOG))] = "syslog.LOG_SYSLOG" + SyslogPriority[strconv.Itoa(int(syslog.LOG_LPR))] = "syslog.LOG_LPR" + SyslogPriority[strconv.Itoa(int(syslog.LOG_NEWS))] = "syslog.LOG_NEWS" + SyslogPriority[strconv.Itoa(int(syslog.LOG_UUCP))] = "syslog.LOG_UUCP" + SyslogPriority[strconv.Itoa(int(syslog.LOG_CRON))] = "syslog.LOG_CRON" + SyslogPriority[strconv.Itoa(int(syslog.LOG_AUTHPRIV))] = "syslog.LOG_AUTHPRIV" + SyslogPriority[strconv.Itoa(int(syslog.LOG_FTP))] = "syslog.LOG_FTP" + SyslogPriority[strconv.Itoa(int(syslog.LOG_LOCAL0))] = "syslog.LOG_LOCAL0" + SyslogPriority[strconv.Itoa(int(syslog.LOG_LOCAL1))] = "syslog.LOG_LOCAL1" + SyslogPriority[strconv.Itoa(int(syslog.LOG_LOCAL2))] = "syslog.LOG_LOCAL2" + SyslogPriority[strconv.Itoa(int(syslog.LOG_LOCAL3))] = "syslog.LOG_LOCAL3" + SyslogPriority[strconv.Itoa(int(syslog.LOG_LOCAL4))] = "syslog.LOG_LOCAL4" + SyslogPriority[strconv.Itoa(int(syslog.LOG_LOCAL5))] = "syslog.LOG_LOCAL5" + SyslogPriority[strconv.Itoa(int(syslog.LOG_LOCAL6))] = "syslog.LOG_LOCAL6" + SyslogPriority[strconv.Itoa(int(syslog.LOG_LOCAL7))] = "syslog.LOG_LOCAL7" +} diff --git a/pkg/analyzer/os_dev_test.go b/pkg/analyzer/os_dev_test.go new file mode 100644 index 0000000..bbef44d --- /dev/null +++ b/pkg/analyzer/os_dev_test.go @@ -0,0 +1,10 @@ +//go:build unix || (js && wasm) + +package analyzer_test + +import "github.com/sashamelentyev/usestdlibvars/pkg/analyzer" + +func init() { + flags = append(flags, analyzer.OSDevNullFlag) + pkgs = append(pkgs, "a/os") +} diff --git a/pkg/analyzer/syslog_priority_test.go b/pkg/analyzer/syslog_priority_test.go new file mode 100644 index 0000000..f4d1547 --- /dev/null +++ b/pkg/analyzer/syslog_priority_test.go @@ -0,0 +1,10 @@ +//go:build !windows && !plan9 + +package analyzer_test + +import "github.com/sashamelentyev/usestdlibvars/pkg/analyzer" + +func init() { + flags = append(flags, analyzer.SyslogPriorityFlag) + pkgs = append(pkgs, "a/syslog") +}