From dd9d0f3732bf35c45fae2799c243b87099445ef5 Mon Sep 17 00:00:00 2001
From: Sandro Santilli <strk@kbt.io>
Date: Tue, 22 Nov 2016 11:43:30 +0100
Subject: [PATCH] Lint action.go

---
 models/action.go | 80 +++++++++++++++++++++++++++++++++++-------------
 models/pull.go   |  2 +-
 2 files changed, 60 insertions(+), 22 deletions(-)

diff --git a/models/action.go b/models/action.go
index 29cf74a80..72d988955 100644
--- a/models/action.go
+++ b/models/action.go
@@ -24,8 +24,10 @@ import (
 	"code.gitea.io/gitea/modules/setting"
 )
 
+// ActionType represents the type of an action.
 type ActionType int
 
+// Possible action types.
 const (
 	ActionCreateRepo        ActionType = iota + 1 // 1
 	ActionRenameRepo                              // 2
@@ -45,12 +47,13 @@ const (
 )
 
 var (
-	// Same as Github. See https://help.github.com/articles/closing-issues-via-commit-messages
-	IssueCloseKeywords  = []string{"close", "closes", "closed", "fix", "fixes", "fixed", "resolve", "resolves", "resolved"}
-	IssueReopenKeywords = []string{"reopen", "reopens", "reopened"}
+	// Same as Github. See
+	// https://help.github.com/articles/closing-issues-via-commit-messages
+	issueCloseKeywords  = []string{"close", "closes", "closed", "fix", "fixes", "fixed", "resolve", "resolves", "resolved"}
+	issueReopenKeywords = []string{"reopen", "reopens", "reopened"}
 
-	IssueCloseKeywordsPat, IssueReopenKeywordsPat *regexp.Regexp
-	IssueReferenceKeywordsPat                     *regexp.Regexp
+	issueCloseKeywordsPat, issueReopenKeywordsPat *regexp.Regexp
+	issueReferenceKeywordsPat                     *regexp.Regexp
 )
 
 func assembleKeywordsPattern(words []string) string {
@@ -58,13 +61,14 @@ func assembleKeywordsPattern(words []string) string {
 }
 
 func init() {
-	IssueCloseKeywordsPat = regexp.MustCompile(assembleKeywordsPattern(IssueCloseKeywords))
-	IssueReopenKeywordsPat = regexp.MustCompile(assembleKeywordsPattern(IssueReopenKeywords))
-	IssueReferenceKeywordsPat = regexp.MustCompile(`(?i)(?:)(^| )\S+`)
+	issueCloseKeywordsPat = regexp.MustCompile(assembleKeywordsPattern(issueCloseKeywords))
+	issueReopenKeywordsPat = regexp.MustCompile(assembleKeywordsPattern(issueReopenKeywords))
+	issueReferenceKeywordsPat = regexp.MustCompile(`(?i)(?:)(^| )\S+`)
 }
 
-// Action represents user operation type and other information to repository.,
-// it implemented interface base.Actioner so that can be used in template render.
+// Action represents user operation type and other information to
+// repository. It implemented interface base.Actioner so that can be
+// used in template render.
 type Action struct {
 	ID           int64 `xorm:"pk autoincr"`
 	UserID       int64 // Receiver user id.
@@ -82,10 +86,13 @@ type Action struct {
 	CreatedUnix  int64
 }
 
+// BeforeInsert will be invoked by XORM before inserting a record
+// representing this object.
 func (a *Action) BeforeInsert() {
 	a.CreatedUnix = time.Now().Unix()
 }
 
+// AfterSet updates the webhook object upon setting a column.
 func (a *Action) AfterSet(colName string, _ xorm.Cell) {
 	switch colName {
 	case "created_unix":
@@ -93,42 +100,57 @@ func (a *Action) AfterSet(colName string, _ xorm.Cell) {
 	}
 }
 
+// GetOpType gets the ActionType of this action.
+// TODO: change return type to ActionType ?
 func (a *Action) GetOpType() int {
 	return int(a.OpType)
 }
 
+// GetActUserName gets the action's user name.
 func (a *Action) GetActUserName() string {
 	return a.ActUserName
 }
 
+// ShortActUserName gets the action's user name trimmed to max 20
+// chars.
 func (a *Action) ShortActUserName() string {
 	return base.EllipsisString(a.ActUserName, 20)
 }
 
+// GetRepoUserName returns the name of the action repository owner.
 func (a *Action) GetRepoUserName() string {
 	return a.RepoUserName
 }
 
+// ShortRepoUserName returns the name of the action repository owner
+// trimmed to max 20 chars.
 func (a *Action) ShortRepoUserName() string {
 	return base.EllipsisString(a.RepoUserName, 20)
 }
 
+// GetRepoName returns the name of the action repository.
 func (a *Action) GetRepoName() string {
 	return a.RepoName
 }
 
+// ShortRepoName returns the name of the action repository
+// trimmed to max 33 chars.
 func (a *Action) ShortRepoName() string {
 	return base.EllipsisString(a.RepoName, 33)
 }
 
+// GetRepoPath returns the virtual path to the action repository.
 func (a *Action) GetRepoPath() string {
 	return path.Join(a.RepoUserName, a.RepoName)
 }
 
+// ShortRepoPath returns the virtual path to the action repository
+// trimed to max 20 + 1 + 33 chars.
 func (a *Action) ShortRepoPath() string {
 	return path.Join(a.ShortRepoUserName(), a.ShortRepoName())
 }
 
+// GetRepoLink returns relative link to action repository.
 func (a *Action) GetRepoLink() string {
 	if len(setting.AppSubUrl) > 0 {
 		return path.Join(setting.AppSubUrl, a.GetRepoPath())
@@ -136,22 +158,29 @@ func (a *Action) GetRepoLink() string {
 	return "/" + a.GetRepoPath()
 }
 
+// GetBranch returns the action's repository branch.
 func (a *Action) GetBranch() string {
 	return a.RefName
 }
 
+// GetContent returns the action's content.
 func (a *Action) GetContent() string {
 	return a.Content
 }
 
+// GetCreate returns the action creation time.
 func (a *Action) GetCreate() time.Time {
 	return a.Created
 }
 
+// GetIssueInfos returns a list of issues associated with
+// the action.
 func (a *Action) GetIssueInfos() []string {
 	return strings.SplitN(a.Content, "|", 2)
 }
 
+// GetIssueTitle returns the title of first issue associated
+// with the action.
 func (a *Action) GetIssueTitle() string {
 	index := com.StrTo(a.GetIssueInfos()[0]).MustInt64()
 	issue, err := GetIssueByIndex(a.RepoID, index)
@@ -162,6 +191,8 @@ func (a *Action) GetIssueTitle() string {
 	return issue.Title
 }
 
+// GetIssueContent returns the content of first issue associated with
+// this action.
 func (a *Action) GetIssueContent() string {
 	index := com.StrTo(a.GetIssueInfos()[0]).MustInt64()
 	issue, err := GetIssueByIndex(a.RepoID, index)
@@ -221,6 +252,7 @@ func issueIndexTrimRight(c rune) bool {
 	return !unicode.IsDigit(c)
 }
 
+// PushCommit represents a commit in a push operation.
 type PushCommit struct {
 	Sha1           string
 	Message        string
@@ -231,6 +263,7 @@ type PushCommit struct {
 	Timestamp      time.Time
 }
 
+// PushCommits represents list of commits in a push operation.
 type PushCommits struct {
 	Len        int
 	Commits    []*PushCommit
@@ -239,13 +272,16 @@ type PushCommits struct {
 	avatars map[string]string
 }
 
+// NewPushCommits creates a new PushCommits object.
 func NewPushCommits() *PushCommits {
 	return &PushCommits{
 		avatars: make(map[string]string),
 	}
 }
 
-func (pc *PushCommits) ToApiPayloadCommits(repoLink string) []*api.PayloadCommit {
+// ToAPIPayloadCommits converts a PushCommits object to
+// api.PayloadCommit format.
+func (pc *PushCommits) ToAPIPayloadCommits(repoLink string) []*api.PayloadCommit {
 	commits := make([]*api.PayloadCommit, len(pc.Commits))
 	for i, commit := range pc.Commits {
 		authorUsername := ""
@@ -281,21 +317,21 @@ func (pc *PushCommits) ToApiPayloadCommits(repoLink string) []*api.PayloadCommit
 
 // AvatarLink tries to match user in database with e-mail
 // in order to show custom avatar, and falls back to general avatar link.
-func (push *PushCommits) AvatarLink(email string) string {
-	_, ok := push.avatars[email]
+func (pc *PushCommits) AvatarLink(email string) string {
+	_, ok := pc.avatars[email]
 	if !ok {
 		u, err := GetUserByEmail(email)
 		if err != nil {
-			push.avatars[email] = base.AvatarLink(email)
+			pc.avatars[email] = base.AvatarLink(email)
 			if !IsErrUserNotExist(err) {
 				log.Error(4, "GetUserByEmail: %v", err)
 			}
 		} else {
-			push.avatars[email] = u.RelAvatarLink()
+			pc.avatars[email] = u.RelAvatarLink()
 		}
 	}
 
-	return push.avatars[email]
+	return pc.avatars[email]
 }
 
 // UpdateIssuesCommit checks if issues are manipulated by commit message.
@@ -305,7 +341,7 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
 		c := commits[i]
 
 		refMarked := make(map[int64]bool)
-		for _, ref := range IssueReferenceKeywordsPat.FindAllString(c.Message, -1) {
+		for _, ref := range issueReferenceKeywordsPat.FindAllString(c.Message, -1) {
 			ref = ref[strings.IndexByte(ref, byte(' '))+1:]
 			ref = strings.TrimRightFunc(ref, issueIndexTrimRight)
 
@@ -343,7 +379,7 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
 
 		refMarked = make(map[int64]bool)
 		// FIXME: can merge this one and next one to a common function.
-		for _, ref := range IssueCloseKeywordsPat.FindAllString(c.Message, -1) {
+		for _, ref := range issueCloseKeywordsPat.FindAllString(c.Message, -1) {
 			ref = ref[strings.IndexByte(ref, byte(' '))+1:]
 			ref = strings.TrimRightFunc(ref, issueIndexTrimRight)
 
@@ -383,7 +419,7 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
 		}
 
 		// It is conflict to have close and reopen at same time, so refsMarkd doesn't need to reinit here.
-		for _, ref := range IssueReopenKeywordsPat.FindAllString(c.Message, -1) {
+		for _, ref := range issueReopenKeywordsPat.FindAllString(c.Message, -1) {
 			ref = ref[strings.IndexByte(ref, byte(' '))+1:]
 			ref = strings.TrimRightFunc(ref, issueIndexTrimRight)
 
@@ -425,6 +461,7 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
 	return nil
 }
 
+// CommitRepoActionOptions represent options of a new commit action.
 type CommitRepoActionOptions struct {
 	PusherName  string
 	RepoOwnerID int64
@@ -435,7 +472,8 @@ type CommitRepoActionOptions struct {
 	Commits     *PushCommits
 }
 
-// CommitRepoAction adds new commit actio to the repository, and prepare corresponding webhooks.
+// CommitRepoAction adds new commit action to the repository, and prepare
+// corresponding webhooks.
 func CommitRepoAction(opts CommitRepoActionOptions) error {
 	pusher, err := GetUserByName(opts.PusherName)
 	if err != nil {
@@ -509,7 +547,7 @@ func CommitRepoAction(opts CommitRepoActionOptions) error {
 			Before:     opts.OldCommitID,
 			After:      opts.NewCommitID,
 			CompareURL: setting.AppUrl + opts.Commits.CompareURL,
-			Commits:    opts.Commits.ToApiPayloadCommits(repo.HTMLURL()),
+			Commits:    opts.Commits.ToAPIPayloadCommits(repo.HTMLURL()),
 			Repo:       apiRepo,
 			Pusher:     apiPusher,
 			Sender:     apiPusher,
diff --git a/models/pull.go b/models/pull.go
index 4b7034ce4..d1ff97437 100644
--- a/models/pull.go
+++ b/models/pull.go
@@ -318,7 +318,7 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository) (err error
 		Before:     pr.MergeBase,
 		After:      pr.MergedCommitID,
 		CompareURL: setting.AppUrl + pr.BaseRepo.ComposeCompareURL(pr.MergeBase, pr.MergedCommitID),
-		Commits:    ListToPushCommits(l).ToApiPayloadCommits(pr.BaseRepo.HTMLURL()),
+		Commits:    ListToPushCommits(l).ToAPIPayloadCommits(pr.BaseRepo.HTMLURL()),
 		Repo:       pr.BaseRepo.APIFormat(nil),
 		Pusher:     pr.HeadRepo.MustOwner().APIFormat(),
 		Sender:     doer.APIFormat(),