Skip to content

Commit b24761d

Browse files
Crocmagnonldez
andauthored
feat: add arangolint linter (#5718)
Co-authored-by: Fernandez Ludovic <[email protected]>
1 parent 3e52be7 commit b24761d

12 files changed

+195
-0
lines changed

.github/dependabot.yml

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ updates:
3838
- "*" # Group all updates into a single larger pull request.
3939
- package-ecosystem: gomod
4040
directories:
41+
- pkg/golinters/arangolint/testdata/
4142
- pkg/golinters/ginkgolinter/testdata/
4243
- pkg/golinters/loggercheck/testdata/
4344
- pkg/golinters/protogetter/testdata/

.golangci.next.reference.yml

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ linters:
1717
# Enable specific linter.
1818
# https://golangci-lint.run/usage/linters/#enabled-by-default
1919
enable:
20+
- arangolint
2021
- asasalint
2122
- asciicheck
2223
- bidichk
@@ -125,6 +126,7 @@ linters:
125126
# Disable specific linter.
126127
# https://golangci-lint.run/usage/linters/#disabled-by-default
127128
disable:
129+
- arangolint
128130
- asasalint
129131
- asciicheck
130132
- bidichk

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ require (
127127
gitlab.com/bosi/decorder v0.4.2
128128
go-simpler.org/musttag v0.13.1
129129
go-simpler.org/sloglint v0.11.0
130+
go.augendre.info/arangolint v0.2.0
130131
go.augendre.info/fatcontext v0.8.0
131132
go.uber.org/automaxprocs v1.6.0
132133
golang.org/x/mod v0.24.0

go.sum

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jsonschema/golangci.next.jsonschema.json

+1
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,7 @@
718718
"anyOf": [
719719
{
720720
"enum": [
721+
"arangolint",
721722
"asasalint",
722723
"asciicheck",
723724
"bidichk",
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package arangolint
2+
3+
import (
4+
"go.augendre.info/arangolint/pkg/analyzer"
5+
"golang.org/x/tools/go/analysis"
6+
7+
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
8+
)
9+
10+
func New() *goanalysis.Linter {
11+
a := analyzer.NewAnalyzer()
12+
13+
return goanalysis.NewLinter(
14+
a.Name,
15+
a.Doc,
16+
[]*analysis.Analyzer{a},
17+
nil,
18+
).WithLoadMode(goanalysis.LoadModeTypesInfo)
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package arangolint
2+
3+
import (
4+
"testing"
5+
6+
"github.com/golangci/golangci-lint/v2/test/testshared/integration"
7+
)
8+
9+
func TestFromTestdata(t *testing.T) {
10+
integration.RunTestdata(t)
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//golangcitest:args -Earangolint
2+
package arangolint
3+
4+
import (
5+
"context"
6+
7+
"github.com/arangodb/go-driver/v2/arangodb"
8+
)
9+
10+
func _() {
11+
ctx := context.Background()
12+
arangoClient := arangodb.NewClient(nil)
13+
db, _ := arangoClient.GetDatabase(ctx, "name", nil)
14+
15+
// direct nil
16+
db.BeginTransaction(ctx, arangodb.TransactionCollections{}, nil) // want "missing AllowImplicit option"
17+
trx, _ := db.BeginTransaction(ctx, arangodb.TransactionCollections{}, nil) // want "missing AllowImplicit option"
18+
_ = trx
19+
20+
// direct missing
21+
db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{LockTimeout: 0}) // want "missing AllowImplicit option"
22+
trx, _ = db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{LockTimeout: 0}) // want "missing AllowImplicit option"
23+
24+
// direct false
25+
db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: false})
26+
trx, _ = db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: false})
27+
28+
// direct true
29+
db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: true})
30+
trx, _ = db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: true})
31+
32+
// direct with other fields
33+
db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: true, LockTimeout: 0})
34+
trx, _ = db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: true, LockTimeout: 0})
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
//golangcitest:args -Earangolint
2+
package arangolint
3+
4+
/*
5+
#include <stdio.h>
6+
#include <stdlib.h>
7+
8+
void myprint(char* s) {
9+
printf("%d\n", s);
10+
}
11+
*/
12+
import "C"
13+
14+
import (
15+
"context"
16+
"unsafe"
17+
18+
"github.com/arangodb/go-driver/v2/arangodb"
19+
)
20+
21+
func _() {
22+
cs := C.CString("Hello from stdio\n")
23+
C.myprint(cs)
24+
C.free(unsafe.Pointer(cs))
25+
}
26+
27+
func _() {
28+
ctx := context.Background()
29+
arangoClient := arangodb.NewClient(nil)
30+
db, _ := arangoClient.GetDatabase(ctx, "name", nil)
31+
32+
// direct nil
33+
db.BeginTransaction(ctx, arangodb.TransactionCollections{}, nil) // want "missing AllowImplicit option"
34+
trx, _ := db.BeginTransaction(ctx, arangodb.TransactionCollections{}, nil) // want "missing AllowImplicit option"
35+
_ = trx
36+
37+
// direct missing
38+
db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{LockTimeout: 0}) // want "missing AllowImplicit option"
39+
trx, _ = db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{LockTimeout: 0}) // want "missing AllowImplicit option"
40+
41+
// direct false
42+
db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: false})
43+
trx, _ = db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: false})
44+
45+
// direct true
46+
db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: true})
47+
trx, _ = db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: true})
48+
49+
// direct with other fields
50+
db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: true, LockTimeout: 0})
51+
trx, _ = db.BeginTransaction(ctx, arangodb.TransactionCollections{}, &arangodb.BeginTransactionOptions{AllowImplicit: true, LockTimeout: 0})
52+
}
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module arangolint
2+
3+
go 1.23.0
4+
5+
require github.com/arangodb/go-driver/v2 v2.1.3
6+
7+
require (
8+
github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e // indirect
9+
github.com/dchest/siphash v1.2.3 // indirect
10+
github.com/google/uuid v1.6.0 // indirect
11+
github.com/kkdai/maglev v0.2.0 // indirect
12+
github.com/mattn/go-colorable v0.1.13 // indirect
13+
github.com/mattn/go-isatty v0.0.20 // indirect
14+
github.com/pkg/errors v0.9.1 // indirect
15+
github.com/rs/zerolog v1.33.0 // indirect
16+
golang.org/x/net v0.33.0 // indirect
17+
golang.org/x/sys v0.28.0 // indirect
18+
golang.org/x/text v0.21.0 // indirect
19+
)

pkg/golinters/arangolint/testdata/go.sum

+46
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/lint/lintersdb/builder_linter.go

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package lintersdb
33
import (
44
"github.com/golangci/golangci-lint/v2/pkg/config"
55
"github.com/golangci/golangci-lint/v2/pkg/golinters"
6+
"github.com/golangci/golangci-lint/v2/pkg/golinters/arangolint"
67
"github.com/golangci/golangci-lint/v2/pkg/golinters/asasalint"
78
"github.com/golangci/golangci-lint/v2/pkg/golinters/asciicheck"
89
"github.com/golangci/golangci-lint/v2/pkg/golinters/bidichk"
@@ -136,6 +137,11 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
136137
// The linters are sorted in the alphabetical order (case-insensitive).
137138
// When a new linter is added the version in `WithSince(...)` must be the next minor version of golangci-lint.
138139
return []*linter.Config{
140+
linter.NewConfig(arangolint.New()).
141+
WithSince("v2.2.0").
142+
WithLoadForGoAnalysis().
143+
WithURL("https://github.com/Crocmagnon/arangolint"),
144+
139145
linter.NewConfig(asasalint.New(&cfg.Linters.Settings.Asasalint)).
140146
WithSince("v1.47.0").
141147
WithLoadForGoAnalysis().

0 commit comments

Comments
 (0)