diff --git a/aws/keyspaces/keyspaces.go b/aws/keyspaces/keyspaces.go
index c68dd064..3d7b0a3b 100644
--- a/aws/keyspaces/keyspaces.go
+++ b/aws/keyspaces/keyspaces.go
@@ -131,7 +131,7 @@ func generateAuthenticator() (gocql.Authenticator, error) {
if err != nil {
return nil, err
}
- var auth sigv4.AwsAuthenticator = sigv4.NewAwsAuthenticator()
+ auth := sigv4.NewAwsAuthenticator()
auth.Region = cfg.Region
auth.AccessKeyId = creds.AccessKeyID
auth.SecretAccessKey = creds.SecretAccessKey
diff --git a/aws/s3/s3.go b/aws/s3/s3.go
index f2005cb8..5989a69d 100644
--- a/aws/s3/s3.go
+++ b/aws/s3/s3.go
@@ -153,7 +153,9 @@ func (s *S3) GetWithContext(
if err != nil {
return 0, err
}
- defer result.Body.Close()
+ defer func() {
+ _ = result.Body.Close()
+ }()
n, err := io.Copy(w, result.Body)
@@ -180,7 +182,9 @@ func (s *S3) GetByteRange(bucket, key, version, byteRange string, b *bytes.Buffe
if err != nil {
return err
}
- defer result.Body.Close()
+ defer func() {
+ _ = result.Body.Close()
+ }()
_, err = b.ReadFrom(result.Body)
@@ -201,7 +205,9 @@ func (s *S3) GetWithLastModified(bucket, key, version string, b *bytes.Buffer) (
if err != nil {
return time.Time{}, err
}
- defer result.Body.Close()
+ defer func() {
+ _ = result.Body.Close()
+ }()
_, err = b.ReadFrom(result.Body)
@@ -221,7 +227,9 @@ func (s *S3) LastModified(bucket, key, version string) (time.Time, error) {
if err != nil {
return time.Time{}, err
}
- defer result.Body.Close()
+ defer func() {
+ _ = result.Body.Close()
+ }()
return aws.ToTime(result.LastModified), nil
}
@@ -538,7 +546,9 @@ func (s *S3) PutStreamWithContext(ctx context.Context, bucket, key string, reade
// putStream is the common code used internally to upload a data stream to
// an S3 bucket using the client's uploader.
func (s *S3) putStream(ctx context.Context, bucket, key string, reader io.ReadCloser) error {
- defer reader.Close()
+ defer func() {
+ _ = reader.Close()
+ }()
if s.uploader == nil {
return errors.New("error uploading to s3, uploader not initialised")
diff --git a/aws/s3/s3_integration_test.go b/aws/s3/s3_integration_test.go
index 0ba6e644..a76380d1 100644
--- a/aws/s3/s3_integration_test.go
+++ b/aws/s3/s3_integration_test.go
@@ -39,11 +39,11 @@ const (
// helper functions
func setAwsEnv() {
- os.Setenv("AWS_REGION", testRegion)
- os.Setenv("AWS_SECRET_ACCESS_KEY", "test")
- os.Setenv("AWS_ACCESS_KEY_ID", "test")
- os.Setenv("AWS_ENDPOINT_URL", customAWSEndpoint)
- os.Setenv("AWS_S3_DISABLE_CHECKSUM", "true")
+ _ = os.Setenv("AWS_REGION", testRegion)
+ _ = os.Setenv("AWS_SECRET_ACCESS_KEY", "test")
+ _ = os.Setenv("AWS_ACCESS_KEY_ID", "test")
+ _ = os.Setenv("AWS_ENDPOINT_URL", customAWSEndpoint)
+ _ = os.Setenv("AWS_S3_DISABLE_CHECKSUM", "true")
}
func setup() {
@@ -79,21 +79,21 @@ func teardown() {
func awsCmdPopulateBucket() {
// create test data
- tmpDir, _ := os.MkdirTemp("", "")
- defer os.RemoveAll(tmpDir)
+ testFile, _ := os.CreateTemp("", "data-*.txt")
+ defer func() {
+ _ = os.Remove(testFile.Name())
+ }()
- testDataFilepath := filepath.Join(tmpDir, "data.txt")
- testFile, _ := os.Create(testDataFilepath)
_, _ = testFile.WriteString(testObjectData)
- testFile.Close()
+ _ = testFile.Close()
// populate bucket
- if err := exec.Command(
+ if err := exec.Command( //nolint:gosec
"aws", "s3api",
"put-object",
"--bucket", testBucket,
"--key", testObjectKey,
- "--body", testDataFilepath,
+ "--body", testFile.Name(),
"--metadata", fmt.Sprintf("%v=%v", testMetaKey, testMetaValue),
).Run(); err != nil {
@@ -102,7 +102,7 @@ func awsCmdPopulateBucket() {
}
func awsCmdBucketExists(bucket string) bool {
- if err := exec.Command(
+ if err := exec.Command( //nolint:gosec
"aws", "s3api",
"head-bucket",
"--bucket", bucket,
@@ -113,7 +113,7 @@ func awsCmdBucketExists(bucket string) bool {
}
func awsCmdExists(key string) bool {
- if err := exec.Command(
+ if err := exec.Command( //nolint:gosec
"aws", "s3api",
"head-object",
"--bucket", testBucket,
@@ -126,7 +126,7 @@ func awsCmdExists(key string) bool {
}
func awsCmdPutKey(key string) {
- if err := exec.Command(
+ if err := exec.Command( //nolint:gosec
"aws", "s3api",
"put-object",
"--bucket", testBucket,
@@ -140,16 +140,18 @@ func awsCmdPutKey(key string) {
func awsCmdPutKeys(keys []string) {
// create test data
tmpDir, _ := os.MkdirTemp("", "")
- defer os.RemoveAll(tmpDir)
+ defer func() {
+ _ = os.RemoveAll(tmpDir)
+ }()
for _, k := range keys {
testDataFilepath := filepath.Join(tmpDir, k)
- testFile, _ := os.Create(testDataFilepath)
+ testFile, _ := os.Create(testDataFilepath) //nolint:gosec
_, _ = testFile.WriteString(testObjectData)
- testFile.Close()
+ _ = testFile.Close()
}
// sync to bucket
- cmd := exec.Command(
+ cmd := exec.Command( //nolint:gosec
"aws", "s3",
"sync", tmpDir, fmt.Sprintf("s3://%v", testBucket),
)
@@ -200,21 +202,21 @@ func awsCmdMeta() awsMeta {
}
func awsCmdGetTestObject() string {
- tmpDir, _ := os.MkdirTemp("", "")
- defer os.RemoveAll(tmpDir)
-
- testDataFilepath := filepath.Join(tmpDir, "data.txt")
+ testFile, _ := os.CreateTemp("", "data-*.txt")
+ defer func() {
+ _ = os.Remove(testFile.Name())
+ }()
- if err := exec.Command(
+ if err := exec.Command( //nolint:gosec
"aws", "s3api",
"get-object",
"--bucket", testBucket,
"--key", testObjectKey,
- testDataFilepath).Run(); err != nil {
+ testFile.Name()).Run(); err != nil {
panic(err)
}
- testFileContents, _ := os.ReadFile(testDataFilepath)
+ testFileContents, _ := os.ReadFile(testFile.Name())
return string(testFileContents)
}
@@ -255,7 +257,8 @@ func TestCreateS3ClientAndReady(t *testing.T) {
// test bad case
// ARRANGE
- os.Unsetenv("AWS_REGION")
+ err = os.Unsetenv("AWS_REGION")
+ require.Nil(t, err)
// ACTION
client, err = New()
@@ -279,7 +282,8 @@ func TestCreateS3ClientWithMaxRetries(t *testing.T) {
// test bad case
// ARRANGE
- os.Unsetenv("AWS_REGION")
+ err = os.Unsetenv("AWS_REGION")
+ require.Nil(t, err)
// ACTION
_, err = NewWithMaxRetries(2)
diff --git a/cfg/cfg.go b/cfg/cfg.go
index fb3ce223..e4ff3ce4 100644
--- a/cfg/cfg.go
+++ b/cfg/cfg.go
@@ -36,21 +36,21 @@ func PostgresEnv() (Postgres, error) {
switch "" {
case p.Host:
- return Postgres{}, errors.New("DB_HOST env var must be set.")
+ return Postgres{}, errors.New("DB_HOST env var must be set")
case p.User:
- return Postgres{}, errors.New("DB_USER env var must be set.")
+ return Postgres{}, errors.New("DB_USER env var must be set")
case p.Password:
- return Postgres{}, errors.New("DB_PASSWD env var must be set.")
+ return Postgres{}, errors.New("DB_PASSWD env var must be set")
case p.Name:
- return Postgres{}, errors.New("DB_NAME env var must be set.")
+ return Postgres{}, errors.New("DB_NAME env var must be set")
case p.SSLMode:
- return Postgres{}, errors.New("DB_SSLMODE env var must be set.")
+ return Postgres{}, errors.New("DB_SSLMODE env var must be set")
case c:
- return Postgres{}, errors.New("DB_CONN_TIMEOUT env var must be set.")
+ return Postgres{}, errors.New("DB_CONN_TIMEOUT env var must be set")
case idle:
- return Postgres{}, errors.New("DB_MAX_IDLE_CONNS env var must be set.")
+ return Postgres{}, errors.New("DB_MAX_IDLE_CONNS env var must be set")
case open:
- return Postgres{}, errors.New("DB_MAX_OPEN_CONNS env var must be set.")
+ return Postgres{}, errors.New("DB_MAX_OPEN_CONNS env var must be set")
}
var err error
diff --git a/cfg/cfg_test.go b/cfg/cfg_test.go
index 42741fcf..17eba5c2 100644
--- a/cfg/cfg_test.go
+++ b/cfg/cfg_test.go
@@ -9,14 +9,14 @@ import (
)
func TestPostgresEnv(t *testing.T) {
- os.Setenv("DB_HOST", "")
- os.Setenv("DB_USER", "")
- os.Setenv("DB_PASSWD", "")
- os.Setenv("DB_NAME", "")
- os.Setenv("DB_SSLMODE", "")
- os.Setenv("DB_CONN_TIMEOUT", "")
- os.Setenv("DB_MAX_IDLE_CONNS", "")
- os.Setenv("DB_MAX_OPEN_CONNS", "")
+ _ = os.Setenv("DB_HOST", "")
+ _ = os.Setenv("DB_USER", "")
+ _ = os.Setenv("DB_PASSWD", "")
+ _ = os.Setenv("DB_NAME", "")
+ _ = os.Setenv("DB_SSLMODE", "")
+ _ = os.Setenv("DB_CONN_TIMEOUT", "")
+ _ = os.Setenv("DB_MAX_IDLE_CONNS", "")
+ _ = os.Setenv("DB_MAX_OPEN_CONNS", "")
var err error
@@ -28,7 +28,7 @@ func TestPostgresEnv(t *testing.T) {
t.Errorf("expected error starting with DB_HOST... got: %s", err.Error())
}
- os.Setenv("DB_HOST", "host")
+ _ = os.Setenv("DB_HOST", "host")
_, err = cfg.PostgresEnv()
if err == nil {
@@ -38,7 +38,7 @@ func TestPostgresEnv(t *testing.T) {
t.Errorf("expected error starting with DB_USER... got: %s", err.Error())
}
- os.Setenv("DB_USER", "user")
+ _ = os.Setenv("DB_USER", "user")
_, err = cfg.PostgresEnv()
if err == nil {
@@ -48,7 +48,7 @@ func TestPostgresEnv(t *testing.T) {
t.Errorf("expected error starting with DB_NAME... got: %s", err.Error())
}
- os.Setenv("DB_PASSWD", "passwd")
+ _ = os.Setenv("DB_PASSWD", "passwd")
_, err = cfg.PostgresEnv()
if err == nil {
@@ -58,7 +58,7 @@ func TestPostgresEnv(t *testing.T) {
t.Errorf("expected error starting with DB_NAME... got: %s", err.Error())
}
- os.Setenv("DB_NAME", "name")
+ _ = os.Setenv("DB_NAME", "name")
_, err = cfg.PostgresEnv()
if err == nil {
@@ -68,7 +68,7 @@ func TestPostgresEnv(t *testing.T) {
t.Errorf("expected error starting with DB_SSLMODE... got: %s", err.Error())
}
- os.Setenv("DB_SSLMODE", "false")
+ _ = os.Setenv("DB_SSLMODE", "false")
_, err = cfg.PostgresEnv()
if err == nil {
@@ -78,7 +78,7 @@ func TestPostgresEnv(t *testing.T) {
t.Errorf("expected error starting with DB_CONN_TIMEOUT... got: %s", err.Error())
}
- os.Setenv("DB_CONN_TIMEOUT", "30")
+ _ = os.Setenv("DB_CONN_TIMEOUT", "30")
_, err = cfg.PostgresEnv()
if err == nil {
@@ -88,7 +88,7 @@ func TestPostgresEnv(t *testing.T) {
t.Errorf("expected error starting with DB_MAX_IDLE_CONNS... got: %s", err.Error())
}
- os.Setenv("DB_MAX_IDLE_CONNS", "1")
+ _ = os.Setenv("DB_MAX_IDLE_CONNS", "1")
_, err = cfg.PostgresEnv()
if err == nil {
@@ -98,7 +98,7 @@ func TestPostgresEnv(t *testing.T) {
t.Errorf("expected error starting with DB_MAX_OPEN_CONNS... got: %s", err.Error())
}
- os.Setenv("DB_MAX_OPEN_CONNS", "2")
+ _ = os.Setenv("DB_MAX_OPEN_CONNS", "2")
p, err := cfg.PostgresEnv()
if err != nil {
diff --git a/health/check.go b/health/check.go
index a770ae60..a59c29b0 100644
--- a/health/check.go
+++ b/health/check.go
@@ -39,7 +39,7 @@ func Check(ctx context.Context, servicePath string, timeout time.Duration) ([]by
}
defer func() {
_, _ = io.Copy(io.Discard, resp.Body)
- resp.Body.Close()
+ _ = resp.Body.Close()
}()
body, err := io.ReadAll(resp.Body)
diff --git a/map180/bbox.go b/map180/bbox.go
index c914b3ff..e06b37f3 100644
--- a/map180/bbox.go
+++ b/map180/bbox.go
@@ -65,25 +65,25 @@ func newBbox(boundingBox string) (b bbox, err error) {
b.llx, err = strconv.ParseFloat(s[0], 64)
if err != nil {
- err = fmt.Errorf("Invalid boundingBox: %s", boundingBox)
+ err = fmt.Errorf("invalid boundingBox: %s", boundingBox)
return
}
b.lly, err = strconv.ParseFloat(s[1], 64)
if err != nil {
- err = fmt.Errorf("Invalid boundingBox: %s", boundingBox)
+ err = fmt.Errorf("invalid boundingBox: %s", boundingBox)
return
}
b.urx, err = strconv.ParseFloat(s[2], 64)
if err != nil {
- err = fmt.Errorf("Invalid boundingBox: %s", boundingBox)
+ err = fmt.Errorf("invalid boundingBox: %s", boundingBox)
return
}
b.ury, err = strconv.ParseFloat(s[3], 64)
if err != nil {
- err = fmt.Errorf("Invalid boundingBox: %s", boundingBox)
+ err = fmt.Errorf("invalid boundingBox: %s", boundingBox)
return
}
@@ -176,7 +176,7 @@ func (b *bbox) newMap3857(width int) (m map3857, err error) {
// tried using st_MakeEnvelope so that only needed to hit DB once
// but it does not do what I for crossing 180
err = db.QueryRow(`with p as (
- select st_transform(st_setsrid(st_makepoint($1, $2), 4326), 3857) as pt
+ select st_transform(st_setsrid(st_makepoint($1, $2), 4326), 3857) as pt
)
select ST_X(pt), ST_Y(pt) from p;`, b.llx, b.lly).Scan(&m.llx, &m.lly)
if err != nil {
@@ -184,7 +184,7 @@ func (b *bbox) newMap3857(width int) (m map3857, err error) {
}
err = db.QueryRow(`with p as (
- select st_transform(st_setsrid(st_makepoint($1, $2), 4326), 3857) as pt
+ select st_transform(st_setsrid(st_makepoint($1, $2), 4326), 3857) as pt
)
select ST_X(pt), ST_Y(pt) from p;`, b.urx, b.ury).Scan(&m.urx, &m.ury)
if err != nil {
diff --git a/map180/label.go b/map180/label.go
index ad694da1..43b5b91a 100644
--- a/map180/label.go
+++ b/map180/label.go
@@ -16,8 +16,8 @@ type label struct {
func (m *map3857) labels() (l []label, err error) {
rows, err := db.Query(`with l as (
- select st_transScale(geom, $5, $6, $7, $8) as pt, type, name from public.map180_labels
- where
+ select st_transScale(geom, $5, $6, $7, $8) as pt, type, name from public.map180_labels
+ where
ST_Within(geom, ST_MakeEnvelope($1,$2,$3,$4, 3857))
AND zoom = $9
)
@@ -25,7 +25,9 @@ func (m *map3857) labels() (l []label, err error) {
if err != nil {
return
}
- defer rows.Close()
+ defer func() {
+ _ = rows.Close()
+ }()
for rows.Next() {
lb := label{}
@@ -35,7 +37,6 @@ func (m *map3857) labels() (l []label, err error) {
}
l = append(l, lb)
}
- rows.Close()
return
}
@@ -44,23 +45,23 @@ func labelsToSVG(labels []label) string {
var b bytes.Buffer
for _, l := range labels {
- l.label = strings.Replace(l.label, `Mount`, `Mt`, -1)
+ l.label = strings.ReplaceAll(l.label, `Mount`, `Mt`)
caser := cases.Title(language.BritishEnglish)
l.label = caser.String(strings.ToLower(l.label))
switch l.featureType {
case 0:
- b.WriteString(fmt.Sprintf("", l.x, l.y))
- b.WriteString(fmt.Sprintf("%s", l.x+3, l.y+5, 11, l.label))
+ fmt.Fprintf(&b, "", l.x, l.y)
+ fmt.Fprintf(&b, "%s", l.x+3, l.y+5, 11, l.label)
case 1:
- b.WriteString(fmt.Sprintf(" ", l.x, l.y))
- b.WriteString(fmt.Sprintf("%s", l.x+3, l.y+5, 11, l.label))
+ fmt.Fprintf(&b, " ", l.x, l.y)
+ fmt.Fprintf(&b, "%s", l.x+3, l.y+5, 11, l.label)
case 3:
- b.WriteString(fmt.Sprintf("", l.x, l.y))
- b.WriteString(fmt.Sprintf("%s", l.x+3, l.y+5, 11, l.label))
+ fmt.Fprintf(&b, "", l.x, l.y)
+ fmt.Fprintf(&b, "%s", l.x+3, l.y+5, 11, l.label)
case 4:
- b.WriteString(fmt.Sprintf("", l.x, l.y))
- b.WriteString(fmt.Sprintf("%s", l.x+3, l.y+5, 11, l.label))
+ fmt.Fprintf(&b, "", l.x, l.y)
+ fmt.Fprintf(&b, "%s", l.x+3, l.y+5, 11, l.label)
}
}
diff --git a/map180/map.go b/map180/map.go
index 595f2e8b..b5438444 100644
--- a/map180/map.go
+++ b/map180/map.go
@@ -138,8 +138,8 @@ func (w *Map180) SVG(boundingBox string, width int, markers []Marker, insetBbox
}
buf.WriteString(``)
- buf.WriteString(fmt.Sprintf("", p.X(), p.Y())
- if err := os.WriteFile("svg_test/nzicon-raoul.svg", b.Bytes(), 0644); err != nil { // nolint: gosec
+ if err := os.WriteFile("svg_test/nzicon-raoul.svg", b.Bytes(), 0600); err != nil {
t.Fatal(err)
}
}
@@ -64,9 +64,9 @@ func TestIconAucklandIsland(t *testing.T) {
t.Error("point should be on the icon map")
}
- b.WriteString(fmt.Sprintf("", p.X(), p.Y()))
+ fmt.Fprintf(&b, "", p.X(), p.Y())
- if err := os.WriteFile("svg_test/nzicon-aucklandisland.svg", b.Bytes(), 0644); err != nil { // nolint: gosec
+ if err := os.WriteFile("svg_test/nzicon-aucklandisland.svg", b.Bytes(), 0600); err != nil {
t.Fatal(err)
}
}
@@ -83,9 +83,9 @@ func TestIconCanberra(t *testing.T) {
t.Error("point should not be on the icon map")
}
- b.WriteString(fmt.Sprintf("", p.X(), p.Y()))
+ fmt.Fprintf(&b, "", p.X(), p.Y())
- if err := os.WriteFile("svg_test/nzicon-canberra.svg", b.Bytes(), 0644); err != nil { // nolint: gosec
+ if err := os.WriteFile("svg_test/nzicon-canberra.svg", b.Bytes(), 0600); err != nil {
t.Fatal(err)
}
}
@@ -107,12 +107,12 @@ func TestMediumWellington(t *testing.T) {
t.Error("point should be on the map")
}
- b.WriteString(fmt.Sprintf("", p.X(), p.Y()))
+ fmt.Fprintf(&b, "", p.X(), p.Y())
}
b.WriteString("")
- if err := os.WriteFile("svg_test/nzmedium-wellington.svg", b.Bytes(), 0644); err != nil { // nolint: gosec
+ if err := os.WriteFile("svg_test/nzmedium-wellington.svg", b.Bytes(), 0600); err != nil {
t.Fatal(err)
}
}
@@ -135,12 +135,12 @@ func TestMediumIob(t *testing.T) {
t.Error("point should not be on the map")
}
- b.WriteString(fmt.Sprintf("", p.X(), p.Y()))
+ fmt.Fprintf(&b, "", p.X(), p.Y())
}
b.WriteString("")
- if err := os.WriteFile("svg_test/nzmedium-iob.svg", b.Bytes(), 0644); err != nil { // nolint: gosec
+ if err := os.WriteFile("svg_test/nzmedium-iob.svg", b.Bytes(), 0600); err != nil {
t.Fatal(err)
}
}
@@ -148,7 +148,7 @@ func TestMediumIob(t *testing.T) {
func TestMediumRegionWellington(t *testing.T) {
var b bytes.Buffer
- var pt Points = Points{
+ pt := Points{
// ~ Wellington
Point{Longitude: 174.7,
Latitude: -41.2,
@@ -190,12 +190,12 @@ func TestMediumRegionWellington(t *testing.T) {
}
}
- b.WriteString(fmt.Sprintf("", p.X(), p.Y()))
+ fmt.Fprintf(&b, "", p.X(), p.Y())
}
b.WriteString("")
- if err := os.WriteFile("svg_test/nzmediumregion-wellington.svg", b.Bytes(), 0644); err != nil { // nolint: gosec
+ if err := os.WriteFile("svg_test/nzmediumregion-wellington.svg", b.Bytes(), 0600); err != nil {
t.Fatal(err)
}
}
@@ -203,7 +203,7 @@ func TestMediumRegionWellington(t *testing.T) {
func TestMediumRegionRaoul(t *testing.T) {
var b bytes.Buffer
- var pt Points = Points{
+ pt := Points{
// ~ Raoul
Point{Longitude: -177.9286,
Latitude: -29.2684,
@@ -244,12 +244,12 @@ func TestMediumRegionRaoul(t *testing.T) {
}
}
- b.WriteString(fmt.Sprintf("", p.X(), p.Y()))
+ fmt.Fprintf(&b, "", p.X(), p.Y())
}
b.WriteString("")
- if err := os.WriteFile("svg_test/nzmediumregion-raoul.svg", b.Bytes(), 0644); err != nil { // nolint: gosec
+ if err := os.WriteFile("svg_test/nzmediumregion-raoul.svg", b.Bytes(), 0600); err != nil {
t.Fatal(err)
}
}
diff --git a/metrics/ddog_http.go b/metrics/ddog_http.go
index f4694ab8..65115b7c 100644
--- a/metrics/ddog_http.go
+++ b/metrics/ddog_http.go
@@ -186,7 +186,7 @@ func dogHttp(apiKey, hostName, appName string, m runtime.MemStats, t []TimerStat
time.Sleep(time.Second << uint(tries)) //nolint:gosec
}
if res != nil {
- res.Body.Close()
+ _ = res.Body.Close()
}
return err
diff --git a/metrics/ddog_msg.go b/metrics/ddog_msg.go
index c102d1da..7acf7a94 100644
--- a/metrics/ddog_msg.go
+++ b/metrics/ddog_msg.go
@@ -33,7 +33,7 @@ type series struct {
// AppName returns the application name.
func AppName() string {
s := os.Args[0]
- return strings.Replace(s[strings.LastIndex(s, "/")+1:], "-", "_", -1)
+ return strings.ReplaceAll(s[strings.LastIndex(s, "/")+1:], "-", "_")
}
// Hostname returns the hostname (can be empty).
@@ -219,7 +219,7 @@ func dogMsg(apiKey, hostName, appName string, m runtime.MemStats, t []TimerStats
time.Sleep(time.Second << uint(tries)) //nolint:gosec
}
if res != nil {
- res.Body.Close()
+ _ = res.Body.Close()
}
return err
diff --git a/sc3ml/quake_test.go b/sc3ml/quake_test.go
index 6b71a9ab..a6ed47cd 100644
--- a/sc3ml/quake_test.go
+++ b/sc3ml/quake_test.go
@@ -10,7 +10,7 @@ import (
func TestFromSC3ML(t *testing.T) {
for _, input := range []string{"2015p768477_0.7.xml", "2015p768477_0.8.xml", "2015p768477_0.9.xml", "2015p768477_0.10.xml"} {
- r, err := os.Open("testdata/" + input)
+ r, err := os.Open("testdata/" + input) //nolint:gosec
if err != nil {
t.Fatal(err)
}
@@ -19,7 +19,10 @@ func TestFromSC3ML(t *testing.T) {
if err != nil {
t.Errorf("%s: %s", input, err.Error())
}
- r.Close()
+ err = r.Close()
+ if err != nil {
+ t.Fatal(err)
+ }
if e.PublicID != "2015p768477" {
t.Errorf("%s: expected publicID 2015p768477 got %s", input, e.PublicID)
diff --git a/sc3ml/sc3ml_test.go b/sc3ml/sc3ml_test.go
index a4b64596..ac29bf4c 100644
--- a/sc3ml/sc3ml_test.go
+++ b/sc3ml/sc3ml_test.go
@@ -23,7 +23,7 @@ the version. The validating them using the XSDs:
*/
func TestUnmarshal(t *testing.T) {
for _, input := range []string{"2015p768477_0.7.xml", "2015p768477_0.8.xml", "2015p768477_0.9.xml", "2015p768477_0.10.xml", "2015p768477_0.11.xml"} {
- b, err := os.ReadFile("testdata/" + input)
+ b, err := os.ReadFile("testdata/" + input) //nolint:gosec
if err != nil {
t.Fatal(err)
}
@@ -205,7 +205,7 @@ func TestUnmarshal(t *testing.T) {
t.Errorf("%s: m.MethodID expected trimmed mean got %s", input, m.MethodID)
}
- if !(len(m.StationMagnitudeContributions) > 1) {
+ if len(m.StationMagnitudeContributions) < 2 {
t.Error("expected more than 1 StationMagnitudeContribution")
}
@@ -266,7 +266,7 @@ func TestUnmarshal(t *testing.T) {
func TestUnmarshall10(t *testing.T) {
for _, input := range []string{"2018p587301-201808060715471135_0.10.xml", "2018p632195-201808222155051312_0.10.xml", "2018p587301-201808060715471135_0.11.xml", "2018p632195-201808222155051312_0.11.xml"} {
- b, err := os.ReadFile("testdata/" + input)
+ b, err := os.ReadFile("testdata/" + input) //nolint:gosec
if err != nil {
t.Fatal(err)
}
@@ -311,7 +311,7 @@ func TestUnmarshall10(t *testing.T) {
func TestDecodeSC3ML07CMT(t *testing.T) {
for _, input := range []string{"2016p408314-201606010431276083_0.7.xml", "2016p408314-201606010431276083_0.8.xml", "2016p408314-201606010431276083_0.9.xml", "2016p408314-201606010431276083_0.10.xml", "2016p408314-201606010431276083_0.11.xml"} {
- b, err := os.ReadFile("testdata/" + input)
+ b, err := os.ReadFile("testdata/" + input) //nolint:gosec
if err != nil {
t.Fatal(err)
}
@@ -392,7 +392,7 @@ func TestDecodeSC3ML07CMT(t *testing.T) {
func TestUnmarshall06(t *testing.T) {
for _, input := range []string{"2801727_0.6.xml"} {
- b, err := os.ReadFile("testdata/" + input)
+ b, err := os.ReadFile("testdata/" + input) //nolint:gosec
if err != nil {
t.Fatal(err)
}
@@ -473,7 +473,7 @@ func TestUnmarshall06(t *testing.T) {
func TestUnmarshall12_13(t *testing.T) {
for _, input := range []string{"2024p344188_0.12.xml", "2024p344188_0.13.xml"} {
- b, err := os.ReadFile("testdata/" + input)
+ b, err := os.ReadFile("testdata/" + input) //nolint:gosec
if err != nil {
t.Fatal(err)
}
@@ -554,7 +554,7 @@ func TestUnmarshall12_13(t *testing.T) {
func TestUnmarshalUnsupported(t *testing.T) {
for _, input := range []string{"2015p768477_0.4.xml"} {
- b, err := os.ReadFile("testdata/" + input)
+ b, err := os.ReadFile("testdata/" + input) //nolint:gosec
if err != nil {
t.Fatal(err)
}
diff --git a/seis/dl/conn.go b/seis/dl/conn.go
index 03894b9d..d49e94ba 100644
--- a/seis/dl/conn.go
+++ b/seis/dl/conn.go
@@ -141,7 +141,7 @@ func (d *DLConn) WriteMS(srcname string, start, end time.Time, data []byte) erro
}
func (d *DLConn) setDeadline() error {
- if !(d.timeout > 0) {
+ if d.timeout < 1 {
return nil
}
return d.SetDeadline(time.Now().Add(d.timeout))
diff --git a/seis/ms/blockette.go b/seis/ms/blockette.go
index e70d3eb9..3a932c90 100644
--- a/seis/ms/blockette.go
+++ b/seis/ms/blockette.go
@@ -116,7 +116,7 @@ func DecodeBlockette1001(data []byte) Blockette1001 {
return Blockette1001{
TimingQuality: b[0],
- MicroSec: int8(b[1]),
+ MicroSec: int8(b[1]), //nolint:gosec
Reserved: b[2],
FrameCount: b[3],
}
diff --git a/seis/ms/decode_test.go b/seis/ms/decode_test.go
index a2f851cb..ff4dc361 100644
--- a/seis/ms/decode_test.go
+++ b/seis/ms/decode_test.go
@@ -16,7 +16,7 @@ func TestRecord_Bytes(t *testing.T) {
for k, v := range files {
t.Run("decode data: "+k, func(t *testing.T) {
- raw, err := os.ReadFile("testdata/" + k)
+ raw, err := os.ReadFile("testdata/" + k) //nolint:gosec
if err != nil {
t.Fatal(err)
}
@@ -58,7 +58,7 @@ func TestRecord_Int32s(t *testing.T) {
for k, v := range files {
t.Run("decode data: "+k, func(t *testing.T) {
- raw, err := os.ReadFile("testdata/" + k)
+ raw, err := os.ReadFile("testdata/" + k) //nolint:gosec
if err != nil {
t.Fatal(err)
}
@@ -95,7 +95,7 @@ func TestRecord_Float32s(t *testing.T) {
for k, v := range files {
t.Run("decode data: "+k, func(t *testing.T) {
- raw, err := os.ReadFile("testdata/" + k)
+ raw, err := os.ReadFile("testdata/" + k) //nolint:gosec
if err != nil {
t.Fatal(err)
}
diff --git a/seis/ms/header.go b/seis/ms/header.go
index 13c26ee8..b15c6018 100644
--- a/seis/ms/header.go
+++ b/seis/ms/header.go
@@ -144,20 +144,20 @@ func (h RecordHeader) SamplePeriod() time.Duration {
// IsValid performs a simple consistency check of the RecordHeader contents.
func (h RecordHeader) IsValid() bool {
for _, b := range h.SequenceNumber {
- if !((b >= '0' && b <= '9') || (b == ' ') || (b == 0)) {
+ if (b < '0' || b > '9') && (b != ' ') && (b != 0) {
return false
}
}
- if q := h.DataQualityIndicator; !(q == 'D' || q == 'R' || q == 'M' || q == 'Q') {
+ if q := h.DataQualityIndicator; q != 'D' && q != 'R' && q != 'M' && q != 'Q' {
return false
}
- if b := h.ReservedByte; !(b == ' ' || b == 0) {
+ if b := h.ReservedByte; b != ' ' && b != 0 {
return false
}
- if s := h.RecordStartTime; !(s.Hour <= 23 && s.Minute <= 59 && s.Second <= 60) {
+ if s := h.RecordStartTime; s.Hour > 23 || s.Minute > 59 || s.Second > 60 {
return false
}
diff --git a/seis/ms/record_test.go b/seis/ms/record_test.go
index 75654e40..2b207d29 100644
--- a/seis/ms/record_test.go
+++ b/seis/ms/record_test.go
@@ -20,7 +20,7 @@ func TestRecord_Unpack(t *testing.T) {
for _, k := range files {
t.Run("unpack header: "+k, func(t *testing.T) {
- raw, err := os.ReadFile("testdata/" + k)
+ raw, err := os.ReadFile("testdata/" + k) //nolint:gosec
if err != nil {
t.Fatal(err)
}
@@ -47,7 +47,7 @@ func TestRecord_File(t *testing.T) {
for k, v := range files {
t.Run("unpack header: "+k, func(t *testing.T) {
- raw, err := os.ReadFile("testdata/" + k)
+ raw, err := os.ReadFile("testdata/" + k) //nolint:gosec
if err != nil {
t.Fatal(err)
}
diff --git a/seis/ms/steim.go b/seis/ms/steim.go
index 107e83ea..1d88dbd6 100644
--- a/seis/ms/steim.go
+++ b/seis/ms/steim.go
@@ -109,7 +109,8 @@ func decodeSteim(version int, raw []byte, wordOrder, frameCount uint8, expectedS
skipFirstDiff = 1
}
- if version == 2 {
+ switch version {
+ case 2:
switch nib {
case 1: //4 8bit differences
d = applyDifferencesFromWord(wb, 4-skipFirstDiff, 8, d)
@@ -136,16 +137,21 @@ func decodeSteim(version int, raw []byte, wordOrder, frameCount uint8, expectedS
return d, fmt.Errorf("steim%v: nib 11 dnib 11 is an illegal configuration @ frame %v word %v", version, f, w)
}
}
- } else if version == 1 {
- switch nib {
- case 1: //4 8bit differences
- d = applyDifferencesFromWord(wb, 4-skipFirstDiff, 8, d)
- case 2: //2 16bit differences
- d = applyDifferencesFromWord(wb, 2-skipFirstDiff, 16, d)
- case 3: //1 32bit difference
- d = applyDifferencesFromWord(wb, 1-skipFirstDiff, 32, d)
+ case 1:
+ {
+ switch nib {
+ case 1: //4 8bit differences
+ d = applyDifferencesFromWord(wb, 4-skipFirstDiff, 8, d)
+ case 2: //2 16bit differences
+ d = applyDifferencesFromWord(wb, 2-skipFirstDiff, 16, d)
+ case 3: //1 32bit difference
+ d = applyDifferencesFromWord(wb, 1-skipFirstDiff, 32, d)
+ }
}
+ default:
+ // invalid version
}
+
}
}
diff --git a/seis/ms/unpack.go b/seis/ms/unpack.go
index 57519dfb..e1b89ea3 100644
--- a/seis/ms/unpack.go
+++ b/seis/ms/unpack.go
@@ -14,12 +14,12 @@ func (m *Record) Unpack(buf []byte) error {
}
m.RecordHeader = DecodeRecordHeader(buf[0:RecordHeaderSize])
- if !m.RecordHeader.IsValid() {
+ if !m.IsValid() {
return fmt.Errorf("unpack: input is not a valid MSEED record: incorrect header")
}
- pointer := m.RecordHeader.FirstBlockette //TODO: This could be replaced with bytes.Reader()
- for i := 0; i < int(m.RecordHeader.NumberOfBlockettesThatFollow); i++ {
+ pointer := m.FirstBlockette //TODO: This could be replaced with bytes.Reader()
+ for i := 0; i < int(m.NumberOfBlockettesThatFollow); i++ {
if pointer == 0 {
return fmt.Errorf("unpack: next blockette pointer == 0 after %v blockettes", i-1)
}
@@ -47,8 +47,8 @@ func (m *Record) Unpack(buf []byte) error {
pointer = bhead.NextBlockette
}
- m.Data = make([]byte, len(buf)-int(m.RecordHeader.BeginningOfData))
- copy(m.Data, buf[m.RecordHeader.BeginningOfData:])
+ m.Data = make([]byte, len(buf)-int(m.BeginningOfData))
+ copy(m.Data, buf[m.BeginningOfData:])
return nil
}
@@ -56,7 +56,7 @@ func (m *Record) Unpack(buf []byte) error {
func (m Record) Bytes() ([]byte, error) {
switch enc := Encoding(m.B1000.Encoding); enc {
case EncodingASCII:
- return trimRight(m.Data[:m.RecordHeader.NumberOfSamples]), nil
+ return trimRight(m.Data[:m.NumberOfSamples]), nil
default:
return nil, fmt.Errorf("invalid encoding %v", enc)
}
@@ -66,7 +66,7 @@ func (m Record) Strings() ([]string, error) {
switch enc := Encoding(m.B1000.Encoding); enc {
case EncodingASCII:
var lines []string
- buf := bytes.NewBuffer(trimRight(m.Data[:m.RecordHeader.NumberOfSamples]))
+ buf := bytes.NewBuffer(trimRight(m.Data[:m.NumberOfSamples]))
scanner := bufio.NewScanner(buf)
for scanner.Scan() {
lines = append(lines, scanner.Text())
@@ -83,7 +83,7 @@ func (m Record) Strings() ([]string, error) {
func (m Record) Int32s() ([]int32, error) {
switch enc := Encoding(m.B1000.Encoding); enc {
case EncodingInt32:
- return decodeInt32(m.Data, m.B1000.WordOrder, m.RecordHeader.NumberOfSamples)
+ return decodeInt32(m.Data, m.B1000.WordOrder, m.NumberOfSamples)
case EncodingSTEIM1:
framecount := uint8(len(m.Data) / 64) //nolint:gosec
if m.B1001.FrameCount != 0 {
@@ -92,7 +92,7 @@ func (m Record) Int32s() ([]int32, error) {
if int(framecount)*64 > len(m.Data) { //make sure the decoding doesn't overrun the buffer
return nil, fmt.Errorf("unpack: header reported more bytes then are present in data packet: %v > %v", framecount*64, len(m.Data))
}
- return decodeSteim(1, m.Data, m.B1000.WordOrder, framecount, m.RecordHeader.NumberOfSamples)
+ return decodeSteim(1, m.Data, m.B1000.WordOrder, framecount, m.NumberOfSamples)
case EncodingSTEIM2: //STEIM2
framecount := uint8(len(m.Data) / 64) //nolint:gosec
if m.B1001.FrameCount != 0 {
@@ -101,7 +101,7 @@ func (m Record) Int32s() ([]int32, error) {
if int(framecount)*64 > len(m.Data) { //make sure the decoding doesn't overrun the buffer
return nil, fmt.Errorf("unpack: header reported more bytes then are present in data packet: %v > %v", framecount*64, len(m.Data))
}
- return decodeSteim(2, m.Data, m.B1000.WordOrder, framecount, m.RecordHeader.NumberOfSamples)
+ return decodeSteim(2, m.Data, m.B1000.WordOrder, framecount, m.NumberOfSamples)
case EncodingIEEEFloat, EncodingIEEEDouble:
samples, err := m.Float64s()
if err != nil {
@@ -130,7 +130,7 @@ func (m Record) Float64s() ([]float64, error) {
}
return res, nil
case EncodingIEEEFloat:
- samples, err := decodeFloat32(m.Data, m.B1000.WordOrder, m.RecordHeader.NumberOfSamples)
+ samples, err := decodeFloat32(m.Data, m.B1000.WordOrder, m.NumberOfSamples)
if err != nil {
return nil, err
}
@@ -140,7 +140,7 @@ func (m Record) Float64s() ([]float64, error) {
}
return res, nil
case EncodingIEEEDouble:
- return decodeFloat64(m.Data, m.B1000.WordOrder, m.RecordHeader.NumberOfSamples)
+ return decodeFloat64(m.Data, m.B1000.WordOrder, m.NumberOfSamples)
default:
return nil, fmt.Errorf("invalid encoding %v", enc)
}
diff --git a/seis/sl/conn.go b/seis/sl/conn.go
index c67d5db7..d7419b75 100644
--- a/seis/sl/conn.go
+++ b/seis/sl/conn.go
@@ -95,7 +95,7 @@ func NewConn(service string, timeout time.Duration) (*Conn, error) {
}
func (c *Conn) setDeadline() error {
- if !(c.timeout > 0) {
+ if c.timeout < 1 {
return nil
}
return c.SetDeadline(time.Now().Add(c.timeout))
diff --git a/seis/sl/info_test.go b/seis/sl/info_test.go
index fa76e8e9..3859be66 100644
--- a/seis/sl/info_test.go
+++ b/seis/sl/info_test.go
@@ -16,7 +16,7 @@ func TestStationInfo(t *testing.T) {
for k, v := range checks {
t.Run(k, func(t *testing.T) {
- raw, err := os.ReadFile("testdata/" + v)
+ raw, err := os.ReadFile("testdata/" + v) //nolint:gosec
if err != nil {
t.Fatal(err)
}
diff --git a/seis/sl/slink.go b/seis/sl/slink.go
index 74f51368..c1b6e316 100644
--- a/seis/sl/slink.go
+++ b/seis/sl/slink.go
@@ -209,7 +209,9 @@ func (s *SLink) CollectWithContext(ctx context.Context, fn CollectFunc) error {
if err != nil {
return err
}
- defer conn.Close()
+ defer func() {
+ _ = conn.Close()
+ }()
for _, l := range list {
if err := conn.CommandStation(l.station, l.network); err != nil {
@@ -231,7 +233,7 @@ func (s *SLink) CollectWithContext(ctx context.Context, fn CollectFunc) error {
return err
}
// there may be a sequence number
- case !(sequence < 0):
+ case sequence >= 0:
//convert the next sequence number into uppercase hex
seq := fmt.Sprintf("%06X", (s.Sequence+1)&0xffffff)
if err := conn.CommandData(seq, starttime); err != nil {
diff --git a/seis/sl/state.go b/seis/sl/state.go
index d0a5918d..819207e8 100644
--- a/seis/sl/state.go
+++ b/seis/sl/state.go
@@ -119,7 +119,7 @@ func (s *State) ReadFile(path string) error {
return nil
}
- data, err := os.ReadFile(path)
+ data, err := os.ReadFile(path) //nolint:gosec
if err != nil {
return err
}
diff --git a/seis/sl/state_test.go b/seis/sl/state_test.go
index 1e97480c..c6269a1d 100644
--- a/seis/sl/state_test.go
+++ b/seis/sl/state_test.go
@@ -43,7 +43,9 @@ func TestState(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- defer os.Remove(tmpfile.Name())
+ defer func() {
+ _ = os.Remove(tmpfile.Name())
+ }()
raw, err := os.ReadFile("testdata/state.json")
if err != nil {
diff --git a/shake/stream_test.go b/shake/stream_test.go
index 4fdf73c7..cf24690c 100644
--- a/shake/stream_test.go
+++ b/shake/stream_test.go
@@ -94,11 +94,13 @@ func TestStreams(t *testing.T) {
Integrator: NewIntegrator(1.0, 1.0/x.sps, x.q),
}
d, err := func(path string) ([]int32, error) {
- file, err := os.Open(path)
+ file, err := os.Open(path) //nolint:gosec
if err != nil {
return nil, err
}
- defer file.Close()
+ defer func() {
+ _ = file.Close()
+ }()
var samples []int32
scanner := bufio.NewScanner(file)
diff --git a/weft/assets.go b/weft/assets.go
index a586900d..10bb22a2 100644
--- a/weft/assets.go
+++ b/weft/assets.go
@@ -70,7 +70,9 @@ func getCspNonce(len int) (string, error) {
}
var buf bytes.Buffer
enc := base64.NewEncoder(base64.StdEncoding, &buf)
- defer enc.Close()
+ defer func() {
+ _ = enc.Close()
+ }()
_, err := enc.Write(b)
if err != nil {
return "", fmt.Errorf("failed to create nonce: %v", err)
@@ -256,11 +258,13 @@ func AssetHandler(r *http.Request, h http.Header, b *bytes.Buffer) error {
// loadAsset loads file and finger prints it with a sha256 hash. prefix is stripped
// from path members in the returned asset.
func loadAsset(file, prefix string) (*asset, error) {
- f, err := os.Open(file)
+ f, err := os.Open(file) //nolint:gosec
if err != nil {
return nil, err
}
- defer f.Close()
+ defer func() {
+ _ = f.Close()
+ }()
// calculate a hash for the file and prefix the asset name with a short hash.
h := sha256.New()
diff --git a/weft/handlers.go b/weft/handlers.go
index b4db8ede..3c65e343 100644
--- a/weft/handlers.go
+++ b/weft/handlers.go
@@ -263,7 +263,9 @@ func writeResponseAndLogMetrics(err error, w http.ResponseWriter, r *http.Reques
if strings.Contains(r.Header.Get("Accept-Encoding"), GZIP) && compressibleMimes[contentType] && b.Len() > 20 {
w.Header().Set("Content-Encoding", GZIP)
gz := gzip.NewWriter(w)
- defer gz.Close()
+ defer func() {
+ _ = gz.Close()
+ }()
w.WriteHeader(status)
n, writeErr = b.WriteTo(gz)
} else {
@@ -328,7 +330,7 @@ func SetBestPracticeHeaders(w http.ResponseWriter, r *http.Request, customCsp ma
csp.WriteString(" ")
if k == "script-src" && nonce != "" && s != "'none'" { //add nonce to CSP
- csp.WriteString(fmt.Sprintf(" 'nonce-%s' 'strict-dynamic' ", nonce))
+ fmt.Fprintf(&csp, " 'nonce-%s' 'strict-dynamic' ", nonce)
}
csp.WriteString(s)
csp.WriteString("; ")
diff --git a/weft/wefttest/wefttest.go b/weft/wefttest/wefttest.go
index 4752e3bd..70c6029b 100644
--- a/weft/wefttest/wefttest.go
+++ b/weft/wefttest/wefttest.go
@@ -99,7 +99,9 @@ func (r Request) Do(server string) ([]byte, error) {
if res, err = client.Do(req); err != nil {
return nil, fmt.Errorf("%s %s %s error: %s", r.ID, r.URL, r.Method, err.Error())
}
- defer res.Body.Close()
+ defer func() {
+ _ = res.Body.Close()
+ }()
if r.Status != res.StatusCode {
return nil, fmt.Errorf("%s %s %s got status %d expected %d", r.ID, r.URL, r.Method, res.StatusCode, r.Status)
@@ -162,7 +164,7 @@ func checkCSP(respCsp, expectedCsp map[string]string) error {
for k, v := range expectedCsp {
v1 := respCsp[k]
if k == "script-src" && strings.Contains(v1, "nonce-") { //check nonce
- escapedV := strings.Replace(v, "*", "\\*", -1) // escape wildcards to avoid regex clash
+ escapedV := strings.ReplaceAll(v, "*", "\\*") // escape wildcards to avoid regex clash
pattern := fmt.Sprintf(noncePattern, escapedV)
if !patternMatch(pattern, v1) {
return fmt.Errorf("## Response CSP %s=%s doesn't match expected %s=%s", k, v1, k, v)