diff --git a/.golangci.yml b/.golangci.yml index 252c7c40201..89474e9be2b 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -15,6 +15,7 @@ linters: - nakedret - perfsprint - paralleltest + - revive - stylecheck - tparallel - unconvert @@ -34,6 +35,36 @@ linters-settings: perfsprint: errorf: true strconcat: false + revive: + rules: + - name: blank-imports + - name: bool-literal-in-expr + - name: context-as-argument + - name: context-keys-type + - name: dot-imports + - name: early-return + - name: empty-block + - name: error-naming + - name: error-return + - name: error-strings + - name: errorf + - name: filename-format + arguments: + - "^[_a-z][_a-z0-9]*.go$" + - name: increment-decrement + - name: indent-error-flow + - name: package-comments + - name: range + - name: receiver-naming + - name: redefines-builtin-id + - name: superfluous-else + - name: time-equal + - name: time-naming + - name: unexported-naming + - name: unexported-return + - name: unreachable-code + - name: var-declaration + - name: var-naming issues: exclude-use-default: false exclude-rules: diff --git a/github/code-scanning.go b/github/code_scanning.go similarity index 100% rename from github/code-scanning.go rename to github/code_scanning.go diff --git a/github/code-scanning_test.go b/github/code_scanning_test.go similarity index 100% rename from github/code-scanning_test.go rename to github/code_scanning_test.go diff --git a/github/event_types_test.go b/github/event_types_test.go index 3883c9f0acb..b09b92799f1 100644 --- a/github/event_types_test.go +++ b/github/event_types_test.go @@ -56,7 +56,7 @@ func TestEditChange_Marshal_BaseChange(t *testing.T) { t.Parallel() testJSONMarshal(t, &EditChange{}, "{}") - Base := EditBase{ + base := EditBase{ Ref: &EditRef{ From: String("BaseRefFrom"), }, @@ -68,7 +68,7 @@ func TestEditChange_Marshal_BaseChange(t *testing.T) { u := &EditChange{ Title: nil, Body: nil, - Base: &Base, + Base: &base, } want := `{ diff --git a/github/github_test.go b/github/github_test.go index e16a2e47aca..73afa2d1968 100644 --- a/github/github_test.go +++ b/github/github_test.go @@ -1153,8 +1153,8 @@ func TestDo_rateLimit(t *testing.T) { t.Errorf("Client rate remaining = %v, want %v", got, want) } reset := time.Date(2013, time.July, 1, 17, 47, 53, 0, time.UTC) - if resp.Rate.Reset.UTC() != reset { - t.Errorf("Client rate reset = %v, want %v", resp.Rate.Reset, reset) + if !resp.Rate.Reset.UTC().Equal(reset) { + t.Errorf("Client rate reset = %v, want %v", resp.Rate.Reset.UTC(), reset) } } @@ -1263,7 +1263,7 @@ func TestDo_rateLimit_errorResponse(t *testing.T) { t.Errorf("Client rate remaining = %v, want %v", got, want) } reset := time.Date(2013, time.July, 1, 17, 47, 53, 0, time.UTC) - if resp.Rate.Reset.UTC() != reset { + if !resp.Rate.Reset.UTC().Equal(reset) { t.Errorf("Client rate reset = %v, want %v", resp.Rate.Reset, reset) } } @@ -1303,7 +1303,7 @@ func TestDo_rateLimit_rateLimitError(t *testing.T) { t.Errorf("rateLimitErr rate remaining = %v, want %v", got, want) } reset := time.Date(2013, time.July, 1, 17, 47, 53, 0, time.UTC) - if rateLimitErr.Rate.Reset.UTC() != reset { + if !rateLimitErr.Rate.Reset.UTC().Equal(reset) { t.Errorf("rateLimitErr rate reset = %v, want %v", rateLimitErr.Rate.Reset.UTC(), reset) } } @@ -1361,7 +1361,7 @@ func TestDo_rateLimit_noNetworkCall(t *testing.T) { if got, want := rateLimitErr.Rate.Remaining, 0; got != want { t.Errorf("rateLimitErr rate remaining = %v, want %v", got, want) } - if rateLimitErr.Rate.Reset.UTC() != reset { + if !rateLimitErr.Rate.Reset.UTC().Equal(reset) { t.Errorf("rateLimitErr rate reset = %v, want %v", rateLimitErr.Rate.Reset.UTC(), reset) } } diff --git a/github/issues_test.go b/github/issues_test.go index a554b34ed28..e4f0cace74a 100644 --- a/github/issues_test.go +++ b/github/issues_test.go @@ -470,11 +470,11 @@ func TestIssuesService_Unlock(t *testing.T) { func TestIsPullRequest(t *testing.T) { t.Parallel() i := new(Issue) - if i.IsPullRequest() == true { + if i.IsPullRequest() { t.Errorf("expected i.IsPullRequest (%v) to return false, got true", i) } i.PullRequestLinks = &PullRequestLinks{URL: String("http://example.com")} - if i.IsPullRequest() == false { + if !i.IsPullRequest() { t.Errorf("expected i.IsPullRequest (%v) to return true, got false", i) } } diff --git a/github/orgs_codesecurity_configurations_test.go b/github/orgs_codesecurity_configurations_test.go index e72f9fb976c..cb630bccb64 100644 --- a/github/orgs_codesecurity_configurations_test.go +++ b/github/orgs_codesecurity_configurations_test.go @@ -327,7 +327,7 @@ func TestOrganizationsService_AttachCodeSecurityConfigurationsToRepositories(t * testMethod(t, r, "POST") type request struct { Scope string `json:"scope"` - SelectedRepositoryIDS []int64 `json:"selected_repository_ids,omitempty"` + SelectedRepositoryIDs []int64 `json:"selected_repository_ids,omitempty"` } v := new(request) err := json.NewDecoder(r.Body).Decode(v) @@ -337,8 +337,8 @@ func TestOrganizationsService_AttachCodeSecurityConfigurationsToRepositories(t * if v.Scope != "selected" { t.Errorf("Organizations.AttachCodeSecurityConfigurationsToRepositories request body scope = %s, want selected", v.Scope) } - if !reflect.DeepEqual(v.SelectedRepositoryIDS, []int64{5, 20}) { - t.Errorf("Organizations.AttachCodeSecurityConfigurationsToRepositories request body selected_repository_ids = %+v, want %+v", v.SelectedRepositoryIDS, []int64{5, 20}) + if !reflect.DeepEqual(v.SelectedRepositoryIDs, []int64{5, 20}) { + t.Errorf("Organizations.AttachCodeSecurityConfigurationsToRepositories request body selected_repository_ids = %+v, want %+v", v.SelectedRepositoryIDs, []int64{5, 20}) } w.WriteHeader(http.StatusAccepted) }) diff --git a/github/orgs_properties.go b/github/orgs_properties.go index d8db48fc94e..d4fe5dfa07d 100644 --- a/github/orgs_properties.go +++ b/github/orgs_properties.go @@ -67,11 +67,11 @@ func (cpv *CustomPropertyValue) UnmarshalJSON(data []byte) error { case []interface{}: strSlice := make([]string, len(v)) for i, item := range v { - if str, ok := item.(string); ok { - strSlice[i] = str - } else { + str, ok := item.(string) + if !ok { return errors.New("non-string value in string array") } + strSlice[i] = str } cpv.Value = strSlice default: diff --git a/github/repos_properties_test.go b/github/repos_properties_test.go index 6f04bf67f5d..28e9573f8e4 100644 --- a/github/repos_properties_test.go +++ b/github/repos_properties_test.go @@ -90,13 +90,13 @@ func TestRepositoriesService_CreateOrUpdateCustomProperties(t *testing.T) { }) ctx := context.Background() - RepoCustomProperty := []*CustomPropertyValue{ + repoCustomProperty := []*CustomPropertyValue{ { PropertyName: "environment", Value: "production", }, } - _, err := client.Repositories.CreateOrUpdateCustomProperties(ctx, "usr", "r", RepoCustomProperty) + _, err := client.Repositories.CreateOrUpdateCustomProperties(ctx, "usr", "r", repoCustomProperty) if err != nil { t.Errorf("Repositories.CreateOrUpdateCustomProperties returned error: %v", err) } @@ -104,6 +104,6 @@ func TestRepositoriesService_CreateOrUpdateCustomProperties(t *testing.T) { const methodName = "CreateOrUpdateCustomProperties" testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { - return client.Repositories.CreateOrUpdateCustomProperties(ctx, "usr", "r", RepoCustomProperty) + return client.Repositories.CreateOrUpdateCustomProperties(ctx, "usr", "r", repoCustomProperty) }) } diff --git a/github/repos_rules.go b/github/repos_rules.go index 0d5052a4b1e..b113553a247 100644 --- a/github/repos_rules.go +++ b/github/repos_rules.go @@ -404,26 +404,26 @@ type CodeScanningTool struct { // This helps us handle the fact that RepositoryRule parameter field can be of numerous types. func (r *RepositoryRule) UnmarshalJSON(data []byte) error { type rule RepositoryRule - var RepositoryRule rule - if err := json.Unmarshal(data, &RepositoryRule); err != nil { + var repositoryRule rule + if err := json.Unmarshal(data, &repositoryRule); err != nil { return err } - r.RulesetID = RepositoryRule.RulesetID - r.RulesetSourceType = RepositoryRule.RulesetSourceType - r.RulesetSource = RepositoryRule.RulesetSource - r.Type = RepositoryRule.Type + r.RulesetID = repositoryRule.RulesetID + r.RulesetSourceType = repositoryRule.RulesetSourceType + r.RulesetSource = repositoryRule.RulesetSource + r.Type = repositoryRule.Type - switch RepositoryRule.Type { + switch repositoryRule.Type { case "creation", "deletion", "non_fast_forward", "required_linear_history", "required_signatures": r.Parameters = nil case "update": - if RepositoryRule.Parameters == nil { + if repositoryRule.Parameters == nil { r.Parameters = nil return nil } params := UpdateAllowsFetchAndMergeRuleParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } @@ -432,12 +432,12 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "merge_queue": - if RepositoryRule.Parameters == nil { + if repositoryRule.Parameters == nil { r.Parameters = nil return nil } params := MergeQueueRuleParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } @@ -447,7 +447,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "required_deployments": params := RequiredDeploymentEnvironmentsRuleParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } @@ -457,7 +457,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "commit_message_pattern", "commit_author_email_pattern", "committer_email_pattern", "branch_name_pattern", "tag_name_pattern": params := RulePatternParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } @@ -467,7 +467,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "pull_request": params := PullRequestRuleParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } @@ -477,7 +477,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "required_status_checks": params := RequiredStatusChecksRuleParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } @@ -487,7 +487,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "workflows": params := RequiredWorkflowsRuleParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } @@ -497,7 +497,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "file_path_restriction": params := RuleFileParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } bytes, _ := json.Marshal(params) @@ -506,7 +506,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "code_scanning": params := RequiredCodeScanningRuleParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } bytes, _ := json.Marshal(params) @@ -515,7 +515,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "max_file_path_length": params := RuleMaxFilePathLengthParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } bytes, _ := json.Marshal(params) @@ -524,7 +524,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "file_extension_restriction": params := RuleFileExtensionRestrictionParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } bytes, _ := json.Marshal(params) @@ -533,7 +533,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { r.Parameters = &rawParams case "max_file_size": params := RuleMaxFileSizeParameters{} - if err := json.Unmarshal(*RepositoryRule.Parameters, ¶ms); err != nil { + if err := json.Unmarshal(*repositoryRule.Parameters, ¶ms); err != nil { return err } bytes, _ := json.Marshal(params) @@ -543,7 +543,7 @@ func (r *RepositoryRule) UnmarshalJSON(data []byte) error { default: r.Type = "" r.Parameters = nil - return fmt.Errorf("RepositoryRule.Type %q is not yet implemented, unable to unmarshal (%#v)", RepositoryRule.Type, RepositoryRule) + return fmt.Errorf("RepositoryRule.Type %q is not yet implemented, unable to unmarshal (%#v)", repositoryRule.Type, repositoryRule) } return nil diff --git a/script/lint.sh b/script/lint.sh index 25e5e049ca3..a52e9bfa2b6 100755 --- a/script/lint.sh +++ b/script/lint.sh @@ -5,7 +5,7 @@ set -e -GOLANGCI_LINT_VERSION="1.61.0" +GOLANGCI_LINT_VERSION="1.62.0" CDPATH="" cd -- "$(dirname -- "$0")/.." BIN="$(pwd -P)"/bin