diff --git a/pkg/analyzer/analyzer.go b/pkg/analyzer/analyzer.go index c9e2dab..42446e8 100644 --- a/pkg/analyzer/analyzer.go +++ b/pkg/analyzer/analyzer.go @@ -26,6 +26,7 @@ const ( SQLIsolationLevelFlag = "sql-isolation-level" TLSSignatureSchemeFlag = "tls-signature-scheme" ConstantKindFlag = "constant-kind" + SyscallFileModeFlag = "syscall-file-mode" SyslogPriorityFlag = "syslog-priority" ) @@ -53,6 +54,7 @@ func flags() flag.FlagSet { flags.Bool(SQLIsolationLevelFlag, false, "suggest the use of sql.LevelXX.String()") flags.Bool(TLSSignatureSchemeFlag, false, "suggest the use of tls.SignatureScheme.String()") flags.Bool(ConstantKindFlag, false, "suggest the use of constant.Kind.String()") + flags.Bool(SyscallFileModeFlag, false, "suggest the use of syscall constants for file mode") flags.Bool(SyslogPriorityFlag, false, "[DEPRECATED] suggest the use of syslog.Priority") return *flags } @@ -221,6 +223,23 @@ func funArgs(pass *analysis.Pass, x *ast.Ident, fun *ast.SelectorExpr, args []as checkHTTPMethod(pass, basicLit) } } + case "os": + if !lookupFlag(pass, SyscallFileModeFlag) { + return + } + + switch fun.Sel.Name { + case "Chmod", "Mkdir", "MkdirAll": + + if basicLit := getBasicLitFromArgs(args, 2, 1, token.INT); basicLit != nil { + checkFileModeMethod(pass, basicLit) + } + case "OpenFile", "WriteFile": + if basicLit := getBasicLitFromArgs(args, 3, 2, token.INT); basicLit != nil { + checkFileModeMethod(pass, basicLit) + } + } + case "syslog": if !lookupFlag(pass, SyslogPriorityFlag) { return @@ -359,6 +378,14 @@ func lookupFlag(pass *analysis.Pass, name string) bool { return pass.Analyzer.Flags.Lookup(name).Value.(flag.Getter).Get().(bool) } +func checkFileModeMethod(pass *analysis.Pass, basicLit *ast.BasicLit) { + currentVal := getBasicLitValue(basicLit) + + if newVal, ok := mapping.FileMode[currentVal]; ok { + report(pass, basicLit, currentVal, newVal) + } +} + func checkHTTPMethod(pass *analysis.Pass, basicLit *ast.BasicLit) { currentVal := getBasicLitValue(basicLit) diff --git a/pkg/analyzer/analyzer_test.go b/pkg/analyzer/analyzer_test.go index 04de5b7..73197cc 100644 --- a/pkg/analyzer/analyzer_test.go +++ b/pkg/analyzer/analyzer_test.go @@ -17,6 +17,7 @@ var flags = []string{ analyzer.SQLIsolationLevelFlag, analyzer.TLSSignatureSchemeFlag, analyzer.ConstantKindFlag, + analyzer.SyscallFileModeFlag, } func TestUseStdlibVars(t *testing.T) { @@ -38,6 +39,7 @@ func TestUseStdlibVars(t *testing.T) { {dir: "a/sql"}, {dir: "a/tls"}, {dir: "a/constant"}, + {dir: "a/os"}, } for _, test := range testCases { diff --git a/pkg/analyzer/internal/gen.go b/pkg/analyzer/internal/gen.go index f862043..c82cea0 100644 --- a/pkg/analyzer/internal/gen.go +++ b/pkg/analyzer/internal/gen.go @@ -121,6 +121,13 @@ func main() { goldenTemplateName: "test-issue89.go.golden.tmpl", fileName: "pkg/analyzer/testdata/src/a/http/issue89.go", }, + { + mapping: mapping.FileMode, + packageName: "os_test", + templateName: "test-osfilemode.go.tmpl", + goldenTemplateName: "test-osfilemode.go.golden.tmpl", + fileName: "pkg/analyzer/testdata/src/a/os/filemode.go", + }, } for _, operation := range operations { diff --git a/pkg/analyzer/internal/mapping/mapping.go b/pkg/analyzer/internal/mapping/mapping.go index 5bad23d..a86d071 100644 --- a/pkg/analyzer/internal/mapping/mapping.go +++ b/pkg/analyzer/internal/mapping/mapping.go @@ -114,6 +114,19 @@ var HTTPStatusCode = map[string]string{ strconv.Itoa(http.StatusNetworkAuthenticationRequired): "http.StatusNetworkAuthenticationRequired", } +var FileMode = map[string]string{ + "0o777": "syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IRWXO", + "0o775": "syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IROTH | syscall.S_IXOTH", + "0o755": "syscall.S_IRWXU | syscall.S_IRGRP | syscall.S_IXGRP | syscall.S_IROTH | syscall.S_IXOTH", + "0o700": "syscall.S_IRWXU", + "0o666": "syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IWGRP | syscall.S_IROTH | syscall.S_IWOTH", + "0o644": "syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IROTH", + "0o600": "syscall.S_IRUSR | syscall.S_IWUSR", + "0o440": "syscall.S_IRUSR | syscall.S_IRGRP", + "0o444": "syscall.S_IRUSR | syscall.S_IRGRP | syscall.S_IROTH", + "0o400": "syscall.S_IRUSR", +} + var RPCDefaultPath = map[string]string{ rpc.DefaultRPCPath: "rpc.DefaultRPCPath", rpc.DefaultDebugPath: "rpc.DefaultDebugPath", diff --git a/pkg/analyzer/internal/template/test-osfilemode.go.golden.tmpl b/pkg/analyzer/internal/template/test-osfilemode.go.golden.tmpl new file mode 100644 index 0000000..f62d3f3 --- /dev/null +++ b/pkg/analyzer/internal/template/test-osfilemode.go.golden.tmpl @@ -0,0 +1,18 @@ +// Code generated by usestdlibvars, DO NOT EDIT. + +package {{ .PackageName }} + +import "os" + +// var f *os.File + +var ( +{{- range $key, $value := .Mapping }} + _, _ = os.OpenFile("file.txt", os.O_CREATE, {{ $value }}) // want `"{{ quoteMeta $key }}" can be replaced by {{ quoteMeta $value }}` + _ = os.WriteFile("file.txt", nil, {{ $value }}) // want `"{{ quoteMeta $key }}" can be replaced by {{ quoteMeta $value }}` + _ = os.Chmod("file.txt", {{ $value }}) // want `"{{ quoteMeta $key }}" can be replaced by {{ quoteMeta $value }}` + _ = os.Mkdir("folder", {{ $value }}) // want `"{{ quoteMeta $key }}" can be replaced by {{ quoteMeta $value }}` + _ = os.MkdirAll("folder", {{ $value }}) // want `"{{ quoteMeta $key }}" can be replaced by {{ quoteMeta $value }}` +{{- end }} +) + diff --git a/pkg/analyzer/internal/template/test-osfilemode.go.tmpl b/pkg/analyzer/internal/template/test-osfilemode.go.tmpl new file mode 100644 index 0000000..5c5d986 --- /dev/null +++ b/pkg/analyzer/internal/template/test-osfilemode.go.tmpl @@ -0,0 +1,18 @@ +// Code generated by usestdlibvars, DO NOT EDIT. + +package {{ .PackageName }} + +import "os" + +// var f *os.File + +var ( +{{- range $key, $value := .Mapping }} + _, _ = os.OpenFile("file.txt", os.O_CREATE, {{ $key }}) // want `"{{ quoteMeta $key }}" can be replaced by {{ quoteMeta $value }}` + _ = os.WriteFile("file.txt", nil, {{ $key }}) // want `"{{ quoteMeta $key }}" can be replaced by {{ quoteMeta $value }}` + _ = os.Chmod("file.txt", {{ $key }}) // want `"{{ quoteMeta $key }}" can be replaced by {{ quoteMeta $value }}` + _ = os.Mkdir("folder", {{ $key }}) // want `"{{ quoteMeta $key }}" can be replaced by {{ quoteMeta $value }}` + _ = os.MkdirAll("folder", {{ $key }}) // want `"{{ quoteMeta $key }}" can be replaced by {{ quoteMeta $value }}` +{{- end }} +) + diff --git a/pkg/analyzer/testdata/src/a/os/filemode.go b/pkg/analyzer/testdata/src/a/os/filemode.go new file mode 100644 index 0000000..b1a1bbe --- /dev/null +++ b/pkg/analyzer/testdata/src/a/os/filemode.go @@ -0,0 +1,60 @@ +// Code generated by usestdlibvars, DO NOT EDIT. + +package os_test + +import "os" + +// var f *os.File + +var ( + _, _ = os.OpenFile("file.txt", os.O_CREATE, 0o400) // want `"0o400" can be replaced by syscall\.S_IRUSR` + _ = os.WriteFile("file.txt", nil, 0o400) // want `"0o400" can be replaced by syscall\.S_IRUSR` + _ = os.Chmod("file.txt", 0o400) // want `"0o400" can be replaced by syscall\.S_IRUSR` + _ = os.Mkdir("folder", 0o400) // want `"0o400" can be replaced by syscall\.S_IRUSR` + _ = os.MkdirAll("folder", 0o400) // want `"0o400" can be replaced by syscall\.S_IRUSR` + _, _ = os.OpenFile("file.txt", os.O_CREATE, 0o440) // want `"0o440" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP` + _ = os.WriteFile("file.txt", nil, 0o440) // want `"0o440" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP` + _ = os.Chmod("file.txt", 0o440) // want `"0o440" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP` + _ = os.Mkdir("folder", 0o440) // want `"0o440" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP` + _ = os.MkdirAll("folder", 0o440) // want `"0o440" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP` + _, _ = os.OpenFile("file.txt", os.O_CREATE, 0o444) // want `"0o444" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.WriteFile("file.txt", nil, 0o444) // want `"0o444" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.Chmod("file.txt", 0o444) // want `"0o444" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.Mkdir("folder", 0o444) // want `"0o444" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.MkdirAll("folder", 0o444) // want `"0o444" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _, _ = os.OpenFile("file.txt", os.O_CREATE, 0o600) // want `"0o600" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR` + _ = os.WriteFile("file.txt", nil, 0o600) // want `"0o600" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR` + _ = os.Chmod("file.txt", 0o600) // want `"0o600" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR` + _ = os.Mkdir("folder", 0o600) // want `"0o600" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR` + _ = os.MkdirAll("folder", 0o600) // want `"0o600" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR` + _, _ = os.OpenFile("file.txt", os.O_CREATE, 0o644) // want `"0o644" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.WriteFile("file.txt", nil, 0o644) // want `"0o644" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.Chmod("file.txt", 0o644) // want `"0o644" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.Mkdir("folder", 0o644) // want `"0o644" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.MkdirAll("folder", 0o644) // want `"0o644" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _, _ = os.OpenFile("file.txt", os.O_CREATE, 0o666) // want `"0o666" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IWGRP \| syscall\.S_IROTH \| syscall\.S_IWOTH` + _ = os.WriteFile("file.txt", nil, 0o666) // want `"0o666" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IWGRP \| syscall\.S_IROTH \| syscall\.S_IWOTH` + _ = os.Chmod("file.txt", 0o666) // want `"0o666" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IWGRP \| syscall\.S_IROTH \| syscall\.S_IWOTH` + _ = os.Mkdir("folder", 0o666) // want `"0o666" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IWGRP \| syscall\.S_IROTH \| syscall\.S_IWOTH` + _ = os.MkdirAll("folder", 0o666) // want `"0o666" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IWGRP \| syscall\.S_IROTH \| syscall\.S_IWOTH` + _, _ = os.OpenFile("file.txt", os.O_CREATE, 0o700) // want `"0o700" can be replaced by syscall\.S_IRWXU` + _ = os.WriteFile("file.txt", nil, 0o700) // want `"0o700" can be replaced by syscall\.S_IRWXU` + _ = os.Chmod("file.txt", 0o700) // want `"0o700" can be replaced by syscall\.S_IRWXU` + _ = os.Mkdir("folder", 0o700) // want `"0o700" can be replaced by syscall\.S_IRWXU` + _ = os.MkdirAll("folder", 0o700) // want `"0o700" can be replaced by syscall\.S_IRWXU` + _, _ = os.OpenFile("file.txt", os.O_CREATE, 0o755) // want `"0o755" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRGRP \| syscall\.S_IXGRP \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.WriteFile("file.txt", nil, 0o755) // want `"0o755" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRGRP \| syscall\.S_IXGRP \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.Chmod("file.txt", 0o755) // want `"0o755" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRGRP \| syscall\.S_IXGRP \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.Mkdir("folder", 0o755) // want `"0o755" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRGRP \| syscall\.S_IXGRP \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.MkdirAll("folder", 0o755) // want `"0o755" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRGRP \| syscall\.S_IXGRP \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _, _ = os.OpenFile("file.txt", os.O_CREATE, 0o775) // want `"0o775" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.WriteFile("file.txt", nil, 0o775) // want `"0o775" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.Chmod("file.txt", 0o775) // want `"0o775" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.Mkdir("folder", 0o775) // want `"0o775" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.MkdirAll("folder", 0o775) // want `"0o775" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _, _ = os.OpenFile("file.txt", os.O_CREATE, 0o777) // want `"0o777" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IRWXO` + _ = os.WriteFile("file.txt", nil, 0o777) // want `"0o777" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IRWXO` + _ = os.Chmod("file.txt", 0o777) // want `"0o777" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IRWXO` + _ = os.Mkdir("folder", 0o777) // want `"0o777" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IRWXO` + _ = os.MkdirAll("folder", 0o777) // want `"0o777" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IRWXO` +) diff --git a/pkg/analyzer/testdata/src/a/os/filemode.go.golden b/pkg/analyzer/testdata/src/a/os/filemode.go.golden new file mode 100755 index 0000000..d5a8309 --- /dev/null +++ b/pkg/analyzer/testdata/src/a/os/filemode.go.golden @@ -0,0 +1,61 @@ +// Code generated by usestdlibvars, DO NOT EDIT. + +package os_test + +import "os" + +// var f *os.File + +var ( + _, _ = os.OpenFile("file.txt", os.O_CREATE, syscall.S_IRUSR) // want `"0o400" can be replaced by syscall\.S_IRUSR` + _ = os.WriteFile("file.txt", nil, syscall.S_IRUSR) // want `"0o400" can be replaced by syscall\.S_IRUSR` + _ = os.Chmod("file.txt", syscall.S_IRUSR) // want `"0o400" can be replaced by syscall\.S_IRUSR` + _ = os.Mkdir("folder", syscall.S_IRUSR) // want `"0o400" can be replaced by syscall\.S_IRUSR` + _ = os.MkdirAll("folder", syscall.S_IRUSR) // want `"0o400" can be replaced by syscall\.S_IRUSR` + _, _ = os.OpenFile("file.txt", os.O_CREATE, syscall.S_IRUSR | syscall.S_IRGRP) // want `"0o440" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP` + _ = os.WriteFile("file.txt", nil, syscall.S_IRUSR | syscall.S_IRGRP) // want `"0o440" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP` + _ = os.Chmod("file.txt", syscall.S_IRUSR | syscall.S_IRGRP) // want `"0o440" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP` + _ = os.Mkdir("folder", syscall.S_IRUSR | syscall.S_IRGRP) // want `"0o440" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP` + _ = os.MkdirAll("folder", syscall.S_IRUSR | syscall.S_IRGRP) // want `"0o440" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP` + _, _ = os.OpenFile("file.txt", os.O_CREATE, syscall.S_IRUSR | syscall.S_IRGRP | syscall.S_IROTH) // want `"0o444" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.WriteFile("file.txt", nil, syscall.S_IRUSR | syscall.S_IRGRP | syscall.S_IROTH) // want `"0o444" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.Chmod("file.txt", syscall.S_IRUSR | syscall.S_IRGRP | syscall.S_IROTH) // want `"0o444" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.Mkdir("folder", syscall.S_IRUSR | syscall.S_IRGRP | syscall.S_IROTH) // want `"0o444" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.MkdirAll("folder", syscall.S_IRUSR | syscall.S_IRGRP | syscall.S_IROTH) // want `"0o444" can be replaced by syscall\.S_IRUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _, _ = os.OpenFile("file.txt", os.O_CREATE, syscall.S_IRUSR | syscall.S_IWUSR) // want `"0o600" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR` + _ = os.WriteFile("file.txt", nil, syscall.S_IRUSR | syscall.S_IWUSR) // want `"0o600" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR` + _ = os.Chmod("file.txt", syscall.S_IRUSR | syscall.S_IWUSR) // want `"0o600" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR` + _ = os.Mkdir("folder", syscall.S_IRUSR | syscall.S_IWUSR) // want `"0o600" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR` + _ = os.MkdirAll("folder", syscall.S_IRUSR | syscall.S_IWUSR) // want `"0o600" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR` + _, _ = os.OpenFile("file.txt", os.O_CREATE, syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IROTH) // want `"0o644" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.WriteFile("file.txt", nil, syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IROTH) // want `"0o644" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.Chmod("file.txt", syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IROTH) // want `"0o644" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.Mkdir("folder", syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IROTH) // want `"0o644" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _ = os.MkdirAll("folder", syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IROTH) // want `"0o644" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IROTH` + _, _ = os.OpenFile("file.txt", os.O_CREATE, syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IWGRP | syscall.S_IROTH | syscall.S_IWOTH) // want `"0o666" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IWGRP \| syscall\.S_IROTH \| syscall\.S_IWOTH` + _ = os.WriteFile("file.txt", nil, syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IWGRP | syscall.S_IROTH | syscall.S_IWOTH) // want `"0o666" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IWGRP \| syscall\.S_IROTH \| syscall\.S_IWOTH` + _ = os.Chmod("file.txt", syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IWGRP | syscall.S_IROTH | syscall.S_IWOTH) // want `"0o666" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IWGRP \| syscall\.S_IROTH \| syscall\.S_IWOTH` + _ = os.Mkdir("folder", syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IWGRP | syscall.S_IROTH | syscall.S_IWOTH) // want `"0o666" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IWGRP \| syscall\.S_IROTH \| syscall\.S_IWOTH` + _ = os.MkdirAll("folder", syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IWGRP | syscall.S_IROTH | syscall.S_IWOTH) // want `"0o666" can be replaced by syscall\.S_IRUSR \| syscall\.S_IWUSR \| syscall\.S_IRGRP \| syscall\.S_IWGRP \| syscall\.S_IROTH \| syscall\.S_IWOTH` + _, _ = os.OpenFile("file.txt", os.O_CREATE, syscall.S_IRWXU) // want `"0o700" can be replaced by syscall\.S_IRWXU` + _ = os.WriteFile("file.txt", nil, syscall.S_IRWXU) // want `"0o700" can be replaced by syscall\.S_IRWXU` + _ = os.Chmod("file.txt", syscall.S_IRWXU) // want `"0o700" can be replaced by syscall\.S_IRWXU` + _ = os.Mkdir("folder", syscall.S_IRWXU) // want `"0o700" can be replaced by syscall\.S_IRWXU` + _ = os.MkdirAll("folder", syscall.S_IRWXU) // want `"0o700" can be replaced by syscall\.S_IRWXU` + _, _ = os.OpenFile("file.txt", os.O_CREATE, syscall.S_IRWXU | syscall.S_IRGRP | syscall.S_IXGRP | syscall.S_IROTH | syscall.S_IXOTH) // want `"0o755" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRGRP \| syscall\.S_IXGRP \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.WriteFile("file.txt", nil, syscall.S_IRWXU | syscall.S_IRGRP | syscall.S_IXGRP | syscall.S_IROTH | syscall.S_IXOTH) // want `"0o755" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRGRP \| syscall\.S_IXGRP \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.Chmod("file.txt", syscall.S_IRWXU | syscall.S_IRGRP | syscall.S_IXGRP | syscall.S_IROTH | syscall.S_IXOTH) // want `"0o755" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRGRP \| syscall\.S_IXGRP \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.Mkdir("folder", syscall.S_IRWXU | syscall.S_IRGRP | syscall.S_IXGRP | syscall.S_IROTH | syscall.S_IXOTH) // want `"0o755" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRGRP \| syscall\.S_IXGRP \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.MkdirAll("folder", syscall.S_IRWXU | syscall.S_IRGRP | syscall.S_IXGRP | syscall.S_IROTH | syscall.S_IXOTH) // want `"0o755" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRGRP \| syscall\.S_IXGRP \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _, _ = os.OpenFile("file.txt", os.O_CREATE, syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IROTH | syscall.S_IXOTH) // want `"0o775" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.WriteFile("file.txt", nil, syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IROTH | syscall.S_IXOTH) // want `"0o775" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.Chmod("file.txt", syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IROTH | syscall.S_IXOTH) // want `"0o775" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.Mkdir("folder", syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IROTH | syscall.S_IXOTH) // want `"0o775" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _ = os.MkdirAll("folder", syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IROTH | syscall.S_IXOTH) // want `"0o775" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IROTH \| syscall\.S_IXOTH` + _, _ = os.OpenFile("file.txt", os.O_CREATE, syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IRWXO) // want `"0o777" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IRWXO` + _ = os.WriteFile("file.txt", nil, syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IRWXO) // want `"0o777" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IRWXO` + _ = os.Chmod("file.txt", syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IRWXO) // want `"0o777" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IRWXO` + _ = os.Mkdir("folder", syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IRWXO) // want `"0o777" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IRWXO` + _ = os.MkdirAll("folder", syscall.S_IRWXU | syscall.S_IRWXG | syscall.S_IRWXO) // want `"0o777" can be replaced by syscall\.S_IRWXU \| syscall\.S_IRWXG \| syscall\.S_IRWXO` +) +