Skip to content

Commit 38ebf64

Browse files
authored
[skip-changelog] Some static-check fixes (#1700)
* Fixed some staticcheck warnings commands/core/search_test.go:24:2: package "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" is being imported more than once (ST1019) commands/core/search_test.go:25:2: other import of "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" i18n/cmd/po/parser.go:34:2: should check returned error before deferring file.Close() (SA5001) i18n/cmd/po/parser.go:105:48: cutset contains duplicate characters (SA1024) * Fixed some staticcheck warnings arduino/libraries/librariesindex/json.go:33:38: unknown JSON option "required" (SA5008) arduino/libraries/librariesindex/json.go:34:38: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:39:37: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:40:37: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:44:37: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:45:37: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:51:51: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:53:51: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:57:51: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:58:51: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:59:51: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:69:34: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:70:34: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:71:34: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:88:36: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:89:36: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:90:36: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:95:30: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:96:30: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:97:30: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:98:30: unknown JSON option "required" (SA5008) arduino/cores/packageindex/index.go:99:30: unknown JSON option "required" (SA5008) arduino/cores/tools.go:30:35: unknown JSON option "required" (SA5008) arduino/cores/tools.go:37:36: unknown JSON option "required" (SA5008) arduino/cores/tools.go:45:18: unknown JSON option "required" (SA5008) arduino/sketch/sketch.go:51:14: unknown JSON option "required" (SA5008) arduino/sketch/sketch.go:53:14: unknown JSON option "omitepty" (SA5008) cli/lib/search.go:103:16: unknown JSON option "required" (SA5008) cli/lib/search.go:107:24: unknown JSON option "required" (SA5008) cli/lib/search.go:183:9: the argument is already a string, there's no need to use fmt.Sprintf (S1025) * Fixed some staticcheck warnings arduino/builder/sketch.go:165:5: should use !bytes.Equal(existingBytes, source) instead (S1004) arduino/builder/sketch_test.go:133:2: this value of err is never used (SA4006) arduino/cores/board.go:125:3: the surrounding loop is unconditionally terminated (SA4004) arduino/cores/packagemanager/package_manager.go:432:4: should replace loop with platforms = append(platforms, platform.GetAllInstalled()...) (S1011) arduino/cores/status.go:191:28: func ToolDependency.extractTool is unused (U1000) arduino/cores/status.go:203:28: func ToolDependency.extractRelease is unused (U1000) arduino/libraries/librariesindex/json.go:141:9: empty branch (SA9003) * Fixed some staticcheck warnings arduino/monitors/null.go:48:14: should use time.Since instead of time.Now().Sub (S1012) arduino/resources/checksums.go:79:5: should use !bytes.Equal(algo.Sum(nil), digest) instead (S1004) arduino/resources/checksums.go:155:6: func createPackageFile is unused (U1000) arduino/resources/helpers.go:65:12: this condition occurs multiple times in this if/else if chain (SA4014) arduino/resources/helpers_test.go:40:24: unnecessary use of fmt.Sprintf (S1039) cli/feedback/feedback.go:187:12: should use String() instead of fmt.Sprintf (S1025) cli/globals/globals.go:31:2: var tr is unused (U1000) cli/lib/args.go:89:6: should use strings.EqualFold instead (SA6005) commands/daemon/monitor.go:176:6: this value of slots is never used (SA4006)
1 parent b86e5cf commit 38ebf64

File tree

20 files changed

+68
-114
lines changed

20 files changed

+68
-114
lines changed

arduino/builder/sketch.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func writeIfDifferent(source []byte, destPath *paths.Path) error {
162162
}
163163

164164
// Overwrite if contents are different
165-
if bytes.Compare(existingBytes, source) != 0 {
165+
if !bytes.Equal(existingBytes, source) {
166166
return destPath.WriteFile(source)
167167
}
168168

arduino/builder/sketch_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -131,5 +131,6 @@ func TestCopyAdditionalFiles(t *testing.T) {
131131

132132
// verify file hasn't changed
133133
info2, err := s2.AdditionalFiles[0].Stat()
134+
require.NoError(t, err)
134135
require.Equal(t, info1.ModTime(), info2.ModTime())
135136
}

arduino/cores/board.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ func (b *Board) GetBuildProperties(userConfigs *properties.Map) (*properties.Map
118118
}
119119

120120
// Check for residual invalid options...
121-
for _, invalidOption := range userConfigs.Keys() {
121+
if invalidKeys := userConfigs.Keys(); len(invalidKeys) > 0 {
122+
invalidOption := invalidKeys[0]
122123
if invalidOption == "" {
123124
return nil, fmt.Errorf(tr("invalid empty option found"))
124125
}

arduino/cores/packageindex/index.go

+20-20
Original file line numberDiff line numberDiff line change
@@ -36,27 +36,27 @@ type Index struct {
3636

3737
// indexPackage represents a single entry from package_index.json file.
3838
type indexPackage struct {
39-
Name string `json:"name,required"`
40-
Maintainer string `json:"maintainer,required"`
39+
Name string `json:"name"`
40+
Maintainer string `json:"maintainer"`
4141
WebsiteURL string `json:"websiteUrl"`
4242
URL string `json:"Url"`
4343
Email string `json:"email"`
44-
Platforms []*indexPlatformRelease `json:"platforms,required"`
45-
Tools []*indexToolRelease `json:"tools,required"`
44+
Platforms []*indexPlatformRelease `json:"platforms"`
45+
Tools []*indexToolRelease `json:"tools"`
4646
Help indexHelp `json:"help,omitempty"`
4747
}
4848

4949
// indexPlatformRelease represents a single Core Platform from package_index.json file.
5050
type indexPlatformRelease struct {
51-
Name string `json:"name,required"`
51+
Name string `json:"name"`
5252
Architecture string `json:"architecture"`
53-
Version *semver.Version `json:"version,required"`
53+
Version *semver.Version `json:"version"`
5454
Deprecated bool `json:"deprecated"`
5555
Category string `json:"category"`
5656
URL string `json:"url"`
57-
ArchiveFileName string `json:"archiveFileName,required"`
58-
Checksum string `json:"checksum,required"`
59-
Size json.Number `json:"size,required"`
57+
ArchiveFileName string `json:"archiveFileName"`
58+
Checksum string `json:"checksum"`
59+
Size json.Number `json:"size"`
6060
Boards []indexBoard `json:"boards"`
6161
Help indexHelp `json:"help,omitempty"`
6262
ToolDependencies []indexToolDependency `json:"toolsDependencies"`
@@ -66,9 +66,9 @@ type indexPlatformRelease struct {
6666

6767
// indexToolDependency represents a single dependency of a core from a tool.
6868
type indexToolDependency struct {
69-
Packager string `json:"packager,required"`
70-
Name string `json:"name,required"`
71-
Version *semver.RelaxedVersion `json:"version,required"`
69+
Packager string `json:"packager"`
70+
Name string `json:"name"`
71+
Version *semver.RelaxedVersion `json:"version"`
7272
}
7373

7474
// indexDiscoveryDependency represents a single dependency of a core from a pluggable discovery tool.
@@ -85,18 +85,18 @@ type indexMonitorDependency struct {
8585

8686
// indexToolRelease represents a single Tool from package_index.json file.
8787
type indexToolRelease struct {
88-
Name string `json:"name,required"`
89-
Version *semver.RelaxedVersion `json:"version,required"`
90-
Systems []indexToolReleaseFlavour `json:"systems,required"`
88+
Name string `json:"name"`
89+
Version *semver.RelaxedVersion `json:"version"`
90+
Systems []indexToolReleaseFlavour `json:"systems"`
9191
}
9292

9393
// indexToolReleaseFlavour represents a single tool flavor in the package_index.json file.
9494
type indexToolReleaseFlavour struct {
95-
OS string `json:"host,required"`
96-
URL string `json:"url,required"`
97-
ArchiveFileName string `json:"archiveFileName,required"`
98-
Size json.Number `json:"size,required"`
99-
Checksum string `json:"checksum,required"`
95+
OS string `json:"host"`
96+
URL string `json:"url"`
97+
ArchiveFileName string `json:"archiveFileName"`
98+
Size json.Number `json:"size"`
99+
Checksum string `json:"checksum"`
100100
}
101101

102102
// indexBoard represents a single Board as written in package_index.json file.

arduino/cores/packagemanager/package_manager.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -429,9 +429,7 @@ func (pm *PackageManager) InstalledPlatformReleases() []*cores.PlatformRelease {
429429
platforms := []*cores.PlatformRelease{}
430430
for _, targetPackage := range pm.Packages {
431431
for _, platform := range targetPackage.Platforms {
432-
for _, release := range platform.GetAllInstalled() {
433-
platforms = append(platforms, release)
434-
}
432+
platforms = append(platforms, platform.GetAllInstalled()...)
435433
}
436434
}
437435
return platforms

arduino/cores/status.go

-24
Original file line numberDiff line numberDiff line change
@@ -187,27 +187,3 @@ func (targetPackage *Package) GetOrCreateTool(name string) *Tool {
187187
func (targetPackage *Package) String() string {
188188
return targetPackage.Name
189189
}
190-
191-
func (tdep ToolDependency) extractTool(sc Packages) (*Tool, error) {
192-
pkg, exists := sc[tdep.ToolPackager]
193-
if !exists {
194-
return nil, errors.New(tr("package not found"))
195-
}
196-
tool, exists := pkg.Tools[tdep.ToolName]
197-
if !exists {
198-
return nil, errors.New(tr("tool not found"))
199-
}
200-
return tool, nil
201-
}
202-
203-
func (tdep ToolDependency) extractRelease(sc Packages) (*ToolRelease, error) {
204-
tool, err := tdep.extractTool(sc)
205-
if err != nil {
206-
return nil, err
207-
}
208-
release, exists := tool.Releases[tdep.ToolVersion.String()]
209-
if !exists {
210-
return nil, errors.New(tr("release not found"))
211-
}
212-
return release, nil
213-
}

arduino/cores/tools.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,22 @@ import (
2727

2828
// Tool represents a single Tool, part of a Package.
2929
type Tool struct {
30-
Name string `json:"name,required"` // The Name of the Tool.
31-
Releases map[string]*ToolRelease `json:"releases"` // Maps Version to Release.
30+
Name string `json:"name"` // The Name of the Tool.
31+
Releases map[string]*ToolRelease `json:"releases"` // Maps Version to Release.
3232
Package *Package `json:"-"`
3333
}
3434

3535
// ToolRelease represents a single release of a tool
3636
type ToolRelease struct {
37-
Version *semver.RelaxedVersion `json:"version,required"` // The version number of this Release.
38-
Flavors []*Flavor `json:"systems"` // Maps OS to Flavor
37+
Version *semver.RelaxedVersion `json:"version"` // The version number of this Release.
38+
Flavors []*Flavor `json:"systems"` // Maps OS to Flavor
3939
Tool *Tool `json:"-"`
4040
InstallDir *paths.Path `json:"-"`
4141
}
4242

4343
// Flavor represents a flavor of a Tool version.
4444
type Flavor struct {
45-
OS string `json:"os,required"` // The OS Supported by this flavor.
45+
OS string `json:"os"` // The OS Supported by this flavor.
4646
Resource *resources.DownloadResource
4747
}
4848

arduino/libraries/librariesindex/json.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ type indexJSON struct {
3030
}
3131

3232
type indexRelease struct {
33-
Name string `json:"name,required"`
34-
Version *semver.Version `json:"version,required"`
33+
Name string `json:"name"`
34+
Version *semver.Version `json:"version"`
3535
Author string `json:"author"`
3636
Maintainer string `json:"maintainer"`
3737
Sentence string `json:"sentence"`
@@ -138,9 +138,8 @@ func (indexDep *indexDependency) extractDependency() *Dependency {
138138
var constraint semver.Constraint
139139
if c, err := semver.ParseConstraint(indexDep.Version); err == nil {
140140
constraint = c
141-
} else {
142-
// FIXME: report invalid constraint
143141
}
142+
// FIXME: else { report invalid constraint }
144143
return &Dependency{
145144
Name: indexDep.Name,
146145
VersionConstraint: constraint,

arduino/monitors/null.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func (mon *NullMonitor) Close() error {
4545
// Read bytes from the port
4646
func (mon *NullMonitor) Read(bytes []byte) (int, error) {
4747
for {
48-
elapsed := time.Now().Sub(mon.started).Seconds()
48+
elapsed := time.Since(mon.started).Seconds()
4949
n := int(elapsed*mon.bps) - mon.sent
5050
if n == 0 {
5151
// Delay until the next char...

arduino/resources/checksums.go

+1-15
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func (r *DownloadResource) TestLocalArchiveChecksum(downloadDir *paths.Path) (bo
7676
return false, fmt.Errorf(tr("computing hash: %s"), err)
7777
}
7878

79-
if bytes.Compare(algo.Sum(nil), digest) != 0 {
79+
if !bytes.Equal(algo.Sum(nil), digest) {
8080
return false, fmt.Errorf(tr("archive hash differs from hash in index"))
8181
}
8282

@@ -152,20 +152,6 @@ func computeDirChecksum(root string) (string, error) {
152152
return fmt.Sprintf("%x", hash.Sum(nil)), nil
153153
}
154154

155-
func createPackageFile(root string) error {
156-
checksum, err := computeDirChecksum(root)
157-
if err != nil {
158-
return err
159-
}
160-
161-
packageJSON, _ := json.Marshal(packageFile{checksum})
162-
err = ioutil.WriteFile(filepath.Join(root, packageFileName), packageJSON, filePermissions)
163-
if err != nil {
164-
return err
165-
}
166-
return nil
167-
}
168-
169155
// CheckDirChecksum reads checksum from the package.json and compares it with a recomputed value.
170156
func CheckDirChecksum(root string) (bool, error) {
171157
packageJSON, err := ioutil.ReadFile(filepath.Join(root, packageFileName))

arduino/resources/helpers.go

-2
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ func (r *DownloadResource) Download(downloadDir *paths.Path, config *downloader.
6262
// File is cached, nothing to do here
6363
return nil, nil
6464
}
65-
} else if err == nil {
66-
// resume download
6765
} else {
6866
return nil, fmt.Errorf(tr("getting archive file info: %s"), err)
6967
}

arduino/resources/helpers_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package resources
1717

1818
import (
19-
"fmt"
2019
"io/ioutil"
2120
"net/http"
2221
"net/http/httptest"
@@ -37,7 +36,7 @@ func (h *EchoHandler) ServeHTTP(writer http.ResponseWriter, request *http.Reques
3736
}
3837

3938
func TestDownloadApplyUserAgentHeaderUsingConfig(t *testing.T) {
40-
goldUserAgentValue := fmt.Sprintf("arduino-cli/0.0.0-test.preview (amd64; linux; go1.12.4) Commit:deadbeef/Build:2019-06-12 11:11:11.111")
39+
goldUserAgentValue := "arduino-cli/0.0.0-test.preview (amd64; linux; go1.12.4) Commit:deadbeef/Build:2019-06-12 11:11:11.111"
4140
goldUserAgentString := "User-Agent: " + goldUserAgentValue
4241

4342
tmp, err := paths.MkTempDir("", "")

arduino/sketch/sketch.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ type Metadata struct {
4848

4949
// BoardMetadata represents the board metadata for the sketch
5050
type BoardMetadata struct {
51-
Fqbn string `json:"fqbn,required"`
51+
Fqbn string `json:"fqbn"`
5252
Name string `json:"name,omitempty"`
53-
Port string `json:"port,omitepty"`
53+
Port string `json:"port,omitempty"`
5454
}
5555

5656
var tr = i18n.Tr

cli/feedback/feedback.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,6 @@ func (fb *Feedback) PrintResult(res Result) {
184184
case YAML:
185185
fb.printYAML(res.Data())
186186
default:
187-
fb.Print(fmt.Sprintf("%s", res))
187+
fb.Print(res.String())
188188
}
189189
}

cli/globals/globals.go

-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"os"
2020
"path/filepath"
2121

22-
"github.com/arduino/arduino-cli/i18n"
2322
"github.com/arduino/arduino-cli/version"
2423
)
2524

@@ -28,5 +27,4 @@ var (
2827
VersionInfo = version.NewInfo(filepath.Base(os.Args[0]))
2928
// DefaultIndexURL is the default index url
3029
DefaultIndexURL = "https://downloads.arduino.cc/packages/package_index.json"
31-
tr = i18n.Tr
3230
)

cli/lib/args.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func ParseLibraryReferenceArgAndAdjustCase(instance *rpc.Instance, arg string) (
8686

8787
candidates := []*rpc.SearchedLibrary{}
8888
for _, foundLib := range res.GetLibraries() {
89-
if strings.ToLower(foundLib.GetName()) == strings.ToLower(libRef.Name) {
89+
if strings.EqualFold(foundLib.GetName(), libRef.Name) {
9090
candidates = append(candidates, foundLib)
9191
}
9292
}

cli/lib/search.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,11 @@ type result struct {
100100
func (res result) Data() interface{} {
101101
if res.namesOnly {
102102
type LibName struct {
103-
Name string `json:"name,required"`
103+
Name string `json:"name"`
104104
}
105105

106106
type NamesOnly struct {
107-
Libraries []LibName `json:"libraries,required"`
107+
Libraries []LibName `json:"libraries"`
108108
}
109109

110110
names := []LibName{}
@@ -180,7 +180,7 @@ func (res result) String() string {
180180
}
181181
}
182182

183-
return fmt.Sprintf("%s", out.String())
183+
return out.String()
184184
}
185185

186186
func versionsFromSearchedLibrary(library *rpc.SearchedLibrary) []*semver.Version {

0 commit comments

Comments
 (0)