Linter configuration and linting.
This commit is contained in:
		
							
								
								
									
										93
									
								
								.golangci.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								.golangci.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,93 @@ | ||||
| --- | ||||
| version: "2" | ||||
|  | ||||
| linters: | ||||
|   default: all | ||||
|   disable: | ||||
|     - containedctx | ||||
|     - depguard | ||||
|     - exhaustruct | ||||
|     - gochecknoglobals | ||||
|     - interfacebloat | ||||
|     - ireturn | ||||
|     - mnd | ||||
|     - testpackage | ||||
|     - tparallel | ||||
|     - unused | ||||
|     - varnamelen | ||||
|     - noinlineerr | ||||
|     - wsl | ||||
|   settings: | ||||
|     cyclop: | ||||
|       max-complexity: 30 | ||||
|       package-average: 30 | ||||
|     forbidigo: | ||||
|       forbid: | ||||
|         - pattern: ^(fmt\.Print(|f|ln)|print|println)$ | ||||
|         - pattern: ^time\.Now\(\)($|\.F|\.A|\.B|\.L|\.UTC\(\)\.I|,|\))(# Calls of time\.Now() without \.UTC() is prohibited\.)? | ||||
|     funlen: | ||||
|       lines: 200 | ||||
|       statements: 60 | ||||
|       ignore-comments: true | ||||
|     gocyclo: | ||||
|       min-complexity: 20 | ||||
|     govet: | ||||
|       enable-all: true | ||||
|     funcorder: | ||||
|       constructor: true | ||||
|       struct-method: false | ||||
|       alphabetical: true | ||||
|     lll: | ||||
|       line-length: 120 | ||||
|     nestif: | ||||
|       min-complexity: 20 | ||||
|     tagliatelle: | ||||
|       case: | ||||
|         rules: | ||||
|           json: snake | ||||
|           yaml: camel | ||||
|         use-field-name: true | ||||
|     wsl_v5: | ||||
|       allow-first-in-block: true | ||||
|       allow-whole-block: false | ||||
|       branch-max-lines: 2 | ||||
|   exclusions: | ||||
|     generated: lax | ||||
|     rules: | ||||
|       - linters: | ||||
|           - gosec | ||||
|         path: .+_test\.go | ||||
|       - linters: | ||||
|           - godox | ||||
|         text: TODO | ||||
|       - linters: | ||||
|           - govet | ||||
|         text: declaration of "err" shadows | ||||
|       - path: (.+)\.go$ | ||||
|         text: ST1000 | ||||
|       - path: (.+)\.go$ | ||||
|         text: package-comments | ||||
|       - linters: | ||||
|           - cyclop | ||||
|         path: (.+)_test\.go | ||||
|     paths: | ||||
|       - third_party$ | ||||
|       - builtin$ | ||||
|       - examples$ | ||||
| issues: | ||||
|   max-issues-per-linter: 0 | ||||
|   max-same-issues: 0 | ||||
| formatters: | ||||
|   enable: | ||||
|     - gofmt | ||||
|     - gofumpt | ||||
|   settings: | ||||
|     gofumpt: | ||||
|       module-path: "bunker" | ||||
|       extra-rules: true | ||||
|   exclusions: | ||||
|     generated: lax | ||||
|     paths: | ||||
|       - third_party$ | ||||
|       - builtin$ | ||||
|       - examples$ | ||||
| @@ -32,3 +32,8 @@ tasks: | ||||
|     desc: "Lints whole workspace." | ||||
|     cmds: | ||||
|       - golangci-lint run client/... | ||||
|  | ||||
|   test: | ||||
|     desc: "Test whole workspace" | ||||
|     cmds: | ||||
|       - go test -test.v ./... | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| //nolint:gosec | ||||
| package main | ||||
|  | ||||
| import ( | ||||
|   | ||||
| @@ -163,7 +163,7 @@ func (a *Application) launchStartupTasks() error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Shutdown stops application | ||||
| // Shutdown stops application. | ||||
| func (a *Application) Shutdown() error { | ||||
| 	a.appLogger.Info("Stopping pztrn's Bunker...") | ||||
|  | ||||
|   | ||||
| @@ -17,7 +17,7 @@ var ( | ||||
| type Service interface { | ||||
| 	// Configure configures service. Called after ConnectDependencies and before LaunchStartupTasks. | ||||
| 	Configure() error | ||||
| 	// ConnectDependencies gets neccessary dependencies. | ||||
| 	// ConnectDependencies gets necessary dependencies. | ||||
| 	ConnectDependencies() error | ||||
| 	// Initialize initializes service's internal state. Called while registering service with Application | ||||
| 	// lifecycle controller. | ||||
|   | ||||
| @@ -41,9 +41,7 @@ func Initialize(app *application.Application) error { | ||||
| } | ||||
|  | ||||
| func (d *database) Configure() error { | ||||
| 	if err := d.configureDBPath(); err != nil { | ||||
| 		return fmt.Errorf("configure: %w", err) | ||||
| 	} | ||||
| 	d.configureDBPath() | ||||
|  | ||||
| 	db, err := sqlx.Open("sqlite", d.dbPath) | ||||
| 	if err != nil { | ||||
|   | ||||
| @@ -4,10 +4,8 @@ import ( | ||||
| 	"path/filepath" | ||||
| ) | ||||
|  | ||||
| func (d *database) configureDBPath() error { | ||||
| func (d *database) configureDBPath() { | ||||
| 	d.dbPath = filepath.Join(d.app.Fyne().Storage().RootURI().Path(), "database.sqlite3") | ||||
|  | ||||
| 	d.logger.Info("Database path configured.", "path", d.dbPath) | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
| @@ -14,7 +14,7 @@ func (d *database) Exec(ctx context.Context, query string, params ...interface{} | ||||
| 		query = d.db.Rebind(query) | ||||
| 	} | ||||
|  | ||||
| 	d.logger.Debug("Executing query.", "query", query, "params", fmt.Sprintf("%+v", params), "module", "core/database") | ||||
| 	d.logger.Debug("Executing query.", "query", query, "params", fmt.Sprintf("%+v", params)) | ||||
|  | ||||
| 	if _, err := d.db.ExecContext(ctx, query, params...); err != nil { | ||||
| 		return fmt.Errorf("%w: failed to Exec(): %w", core.ErrDatabase, err) | ||||
| @@ -29,12 +29,7 @@ func (d *database) Get(ctx context.Context, target interface{}, query string, pa | ||||
| 		query = d.db.Rebind(query) | ||||
| 	} | ||||
|  | ||||
| 	d.logger.Debug( | ||||
| 		"Getting single data from database with query.", | ||||
| 		"query", query, | ||||
| 		"params", fmt.Sprintf("%+v", params), | ||||
| 		"module", "core/database", | ||||
| 	) | ||||
| 	d.logger.Debug("Getting single data from database with query.", "query", query, "params", fmt.Sprintf("%+v", params)) | ||||
|  | ||||
| 	if err := d.db.GetContext(ctx, target, query, params...); err != nil { | ||||
| 		return fmt.Errorf("%w: failed to Get(): %w", core.ErrDatabase, err) | ||||
| @@ -49,7 +44,7 @@ func (d *database) NamedExec(ctx context.Context, query string, param interface{ | ||||
| 		query = d.db.Rebind(query) | ||||
| 	} | ||||
|  | ||||
| 	d.logger.Debug("Executing named query.", "query", query, "params", fmt.Sprintf("%+v", param), "module", "core/database") | ||||
| 	d.logger.Debug("Executing named query.", "query", query, "params", fmt.Sprintf("%+v", param)) | ||||
|  | ||||
| 	if _, err := d.db.NamedExecContext(ctx, query, param); err != nil { | ||||
| 		return fmt.Errorf("%w: failed to NamedExec(): %w", core.ErrDatabase, err) | ||||
| @@ -64,12 +59,7 @@ func (d *database) Select(ctx context.Context, target interface{}, query string, | ||||
| 		query = d.db.Rebind(query) | ||||
| 	} | ||||
|  | ||||
| 	d.logger.Debug( | ||||
| 		"Selecting from database with query.", | ||||
| 		"query", query, | ||||
| 		"params", fmt.Sprintf("%+v", params), | ||||
| 		"module", "core/database", | ||||
| 	) | ||||
| 	d.logger.Debug("Selecting from database with query.", "query", query, "params", fmt.Sprintf("%+v", params)) | ||||
|  | ||||
| 	if err := d.db.SelectContext(ctx, target, query, params...); err != nil { | ||||
| 		return fmt.Errorf("%w: failed to Select(): %w", core.ErrDatabase, err) | ||||
|   | ||||
| @@ -54,7 +54,7 @@ func (m *mainWindow) generateSysInfoTab() *container.TabItem { | ||||
| 	for { | ||||
| 		//nolint:mnd | ||||
| 		if memoryTotal > 1024 { | ||||
| 			memoryTotal = memoryTotal / 1024 | ||||
| 			memoryTotal /= 1024 | ||||
| 			memoryTotalDivCount++ | ||||
|  | ||||
| 			continue | ||||
| @@ -81,7 +81,7 @@ func (m *mainWindow) generateSysInfoTab() *container.TabItem { | ||||
| 	//nolint:mnd | ||||
| 	for { | ||||
| 		if memoryFree > 1024 { | ||||
| 			memoryFree = memoryFree / 1024 | ||||
| 			memoryFree /= 1024 | ||||
| 			memoryFreeDivCount++ | ||||
|  | ||||
| 			continue | ||||
|   | ||||
| @@ -17,10 +17,12 @@ func NewGooseLogger(logger *slog.Logger) *GooseLogger { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Fatalf is a proxy for goose logging. | ||||
| func (gl *GooseLogger) Fatalf(format string, v ...interface{}) { | ||||
| 	gl.logger.Error(fmt.Sprintf(format, v...)) | ||||
| } | ||||
|  | ||||
| // Printf is a proxy for goose logging. | ||||
| func (gl *GooseLogger) Printf(format string, v ...interface{}) { | ||||
| 	gl.logger.Info(fmt.Sprintf(format, v...)) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user