Analysis tools logo

87 Go Static Analysis Tools

Type:
Any

What is Go?

Go is a statically typed, compiled programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson. Go is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency. The language is often referred to as "Golang" because of its domain name, golang.org, but the proper name is Go.

(More info)

What are the best Go analysis tools?

0

aligncheck

  • Type: cli

Find inefficiently packed structs.

0

Better Code Hub

  • Type: service

Better Code Hub checks your GitHub codebase against 10 engineering guidelines devised by the authority in software quality, Software Improvement Group.

0

bodyclose

  • Type: cli
230

Checks whether HTTP response body is closed.

0

Codeac

  • Type: service

Automated code review tool integrates with GitHub, Bitbucket and GitLab (even self-hosted). Available for JavaScript, TypeScript, Python, Ruby, Go, PHP, Java, Docker, and more. (open-source free)

0

Code Intelligence

  • Type: service

CI/CD-agnostic DevSecOps platform which combines industry-leading fuzzing engines for finding bugs and visualizing code coverage

0

Codiga

  • Type: service

Automated Code Reviews and Technical Debt management platform that supports 12+ languages.

0

CodeScene

  • Type: service

CodeScene is a quality visualization tool for software. Prioritize technical debt, detect delivery risks, and measure organizational aspects. Fully automated.

0

deadcode

  • Type: cli
41

Finds unused code.

0

DeepSource

  • Type: service

In-depth static analysis to find issues in verticals of bug risks, security, anti-patterns, performance, documentation and style. Native integrations with GitHub, GitLab and Bitbucket. Less than 5% false positives.

0

dingo-hunter

  • Type: cli
299

Static analyser for finding deadlocks in Go.

0

dogsled

  • Type: cli
68

Finds assignments/declarations with too many blank identifiers.

0

dupl

  • Type: cli
297

Reports potentially duplicated code.

0

Embold

  • Type: service

Intelligent software analytics platform that identifies design issues, code issues, duplication and metrics. Supports Java, C, C++, C#, JavaScript, TypeScript, Python, Go, Kotlin and more.

0

errcheck

  • Type: cli
1909

Check that error return values are used.

0

errwrap

  • Type: cli
354

Wrap and fix Go errors with the new %w verb directive. This tool analyzes fmt.Errorf() calls and reports calls that contain a verb directive that is different than the new %w verb directive introduced in Go v1.13. It's also capable of rewriting calls to use the new %w wrap verb directive.

0

flen

  • Type: cli
49

Get info on length of functions in a Go package.

0

go-consistent

  • Type: cli
313

Analyzer that helps you to make your Go programs more consistent.

0

go-critic

  • Type: cli
1407

Go source code linter that maintains checks which are currently not implemented in other linters.

0

go tool vet --shadow

  • Type: cli

Reports variables that may have been unintentionally shadowed.

0

go vet

  • Type: cli

Examines Go source code and reports suspicious.

0

gochecknoglobals

  • Type: cli
68

Checks that no globals are present.

0

go/ast

  • Type: cli

Package ast declares the types used to represent syntax trees for Go packages.

0

goconst

  • Type: cli
224

Finds repeated strings that could be replaced by a constant.

0

gocyclo

  • Type: cli
1055

Calculate cyclomatic complexities of functions in Go source code.

0

gofmt -s

  • Type: cli

Checks if the code is properly formatted and could not be further simplified.

0

goimports

  • Type: cli

Checks missing or unreferenced package imports.

0

gofumpt

  • Type: cli
  • Type: ide-plugin
1891

Enforce a stricter format than `gofmt`, while being backwards-compatible. That is, `gofumpt` is happy with a subset of the formats that `gofmt` is happy with. The tool is a fork of `gofmt` as of Go 1.19, and requires Go 1.18 or later. It can be used as a drop-in replacement to format your Go code, and running gofmt after gofumpt should produce no changes. `gofumpt` will never add rules which disagree with `gofmt` formatting. So we extend `gofmt` rather than compete with it.

0

gokart

  • Type: cli
2030

Golang security analysis with a focus on minimizing false positives. It is capable of tracing the source of variables and function arguments to determine whether input sources are safe.

0

GolangCI-Lint

  • Type: cli
11246

Alternative to `Go Meta Linter`: GolangCI-Lint is a linters aggregator.

0

golint

  • Type: cli
3964

Prints out coding style mistakes in Go source code.

0

goone

  • Type: cli
41

Finds N+1 queries (SQL calls in a for loop) in go code

0

goreporter

  • Type: cli
3012

Concurrently runs many linters and normalises their output to a report.

0

goroutine-inspect

  • Type: cli
427

An interactive tool to analyze Golang goroutine dump.

0

gosec (gas)

  • Type: cli
6360

Inspects source code for security problems by scanning the Go AST.

0

gotype

  • Type: cli

Syntactic and semantic analysis similar to the Go compiler.

0

Hound CI

  • Type: cli
1909

Comments on style violations in GitHub pull requests. Supports Coffeescript, Go, HAML, JavaScript, Ruby, SCSS and Swift.

0

ineffassign

  • Type: cli
338

Detect ineffectual assignments in Go code.

0

Kiuwan

  • Type: service

Identify and remediate cyber threats in a blazingly fast, collaborative environment, with seamless integration in your SDLC. Python, C\C++, Java, C#, PHP and more.

0

LGTM

  • Type: service

Find security vulnerabilities, variants, and critical code quality issues using CodeQL queries over source code. Automatic PR code review; free for open source. Formerly semmle. It supports public Git repositories hosted on Bitbucket Cloud, GitHub.com, GitLab.com.

0

lizard

  • Type: cli
1422

Lizard is an extensible Cyclomatic Complexity Analyzer for many programming languages including C/C++ (doesn't require all the header files or Java imports). It also does copy-paste detection (code clone detection/code duplicate detection) and many other forms of static code analysis. Counts lines of code without comments, CCN (cyclomatic complexity number), token count of functions, parameter count of functions.

0

lll

  • Type: cli
61

Report long lines.

0

maligned

  • Type: cli
499

Detect structs that would take less memory if their fields were sorted.

0

misspell

  • Type: cli
1208

Finds commonly misspelled English words.

0

nakedret

  • Type: cli
83

Finds naked returns.

0

nargs

  • Type: cli
81

Finds unused arguments in function declarations.

0

ocular

  • Type: service

Enables code auditors and security teams to interactively investigate their unique code bases to find business logic flaws and technical vulnerabilities that traditional SASTs cannot. This is done by enabling the analyst to write their own custom queries. Can find hard-coded secrets, authentication issues, and malicious code like rootkits and backdoors.

0

prealloc

  • Type: cli
500

Finds slice declarations that could potentially be preallocated.

0

Reviewdog

  • Type: cli
5581

A tool for posting review comments from any linter in any code hosting service.

0

revive

  • Type: cli
3816

Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint.

0

safesql

  • Type: cli
567

Static analysis tool for Golang that protects against SQL injections.

0

Scanmycode CE (Community Edition)

  • Type: service
299

Scanmycode - Code Scanning/SAST/Linting using many tools/Scanners with One Report

0

Scrutinizer

  • Type: service

A proprietary code quality checker that can be integrated with GitHub.

0

Semgrep

  • Type: cli
  • Type: service
7167

A fast, open-source, static analysis tool for finding bugs and enforcing code standards at editor, commit, and CI time. Its rules look like the code you already write; no abstract syntax trees or regex wrestling. Supports 17+ languages.

0

ShiftLeft Scan

  • Type: cli
  • Type: service
527

Scan is a free open-source DevSecOps platform for detecting security issues in source code and dependencies. It supports a broad range of languages and CI/CD pipelines.

0

ShiftLeft

  • Type: service

Identify vulnerabilities that are unique to your code base before they reach production. Leverages the Code Property Graph (CPG) to run its analyses concurrently in a single graph of graphs. Automatically finds business logic flaws in dev like hardcoded secrets and logic bombs

0

shisho

  • Type: cli
  • Type: service
339

A lightweight static code analyzer designed for developers and security teams. It allows you to analyze and transform source code with an intuitive DSL similar to sed, but for code.

0

Sider

  • Type: service

An automated code reviewing tool. Improving developers' productivity.

0

Sigrid

  • Type: cli
  • Type: service

Sigrid helps you to improve your software by measuring your system's code quality, and then compares the results against a benchmark of thousands of industry systems to give you concrete advice on areas where you can improve.

0

Snyk

  • Type: service

Vulnerability scanner for dependencies of node.js apps (free for Open Source Projects).

0

SonarCloud

  • Type: service

Multi-language cloud-based static code analysis. History, trends, security hot-spots, pull request analysis and more. Free for open source.

0

Sonatype

  • Type: service

Reports known vulnerabilities in common dependencies and recommends updated packages to minimize breaking changes

0

sqlvet

  • Type: cli
456

Performs static analysis on raw SQL queries in your Go code base to surface potential runtime errors. It checks for SQL syntax error, identifies unsafe queries that could potentially lead to SQL injections makes sure column count matches value count in INSERT statements and validates table- and column names.

0

staticcheck

  • Type: cli
4970

Go static analysis that specialises in finding bugs, simplifying code and improving performance.

0

structcheck

  • Type: cli

Find unused struct fields.

0

structslop

  • Type: cli
666

Static analyzer for Go that recommends struct field rearrangements to provide for maximum space/allocation efficiency

0

Svace

  • Type: cli

Static code analysis tool for Java,C,C++,C#,Go.

0

TencentCodeAnalysis

  • Type: service
  • Type: cli
1295

Tencent Cloud Code Analysis (TCA for short, code-named CodeDog inside the company early) is a comprehensive platform for code analysis and issue tracking. TCA consist of three components, server, web and client. It integrates of a number of self-developed tools, and also supports dynamic integration of code analysis tools in various programming languages.

0

test

  • Type: cli

Show location of test failures from the stdlib testing module.

0

ThreatMapper

  • Type: service
  • Type: web
2200

Vulnerability Scanner and Risk Evaluation for containers, serverless and hosts at runtime. ThreatMapper generates runtime BOMs from dependencies and operating system packages, matches against multiple threat feeds, scans for unprotected secrets, and scores issues based on severity and risk-of-exploit.

0

todocheck

  • Type: cli
391

Linter for integrating annotated TODOs with your issue trackers

0

trunk

  • Type: cli

Modern repositories include many technologies, each with its own set of linters. With 30+ linters and counting, Trunk makes it dead-simple to identify, install, configure, and run the right linters, static analyzers, and formatters for all your repos.

0

unconvert

  • Type: cli
334

Detect redundant type conversions.

0

Unibeautify

  • Type: cli
  • Type: service
525

Universal code beautifier with a GitHub app. Supports HTML, CSS, JavaScript, TypeScript, JSX, Vue, C++, Go, Objective-C, Java, Python, PHP, GraphQL, Markdown, and more.

0

unparam

  • Type: cli
404

Find unused function parameters.

0

varcheck

  • Type: cli

Find unused global variables and constants.

0

wsl

  • Type: cli
170

Enforces empty lines at the right places.

0

govulncheck

  • Type: cli
  • Type: service

Govulncheck reports known vulnerabilities that affect Go code. It uses static analysis of source code or a binary's symbol table to narrow down reports to only those that could affect the application. By default, govulncheck makes requests to the Go vulnerability database at https://vuln.go.dev. Requests to the vulnerability database contain only module paths, not code or other properties of your program.

Deprecated/unmaintained tools

0

Go Meta Linter

  • Type: cli
3541

Concurrently run Go lint tools and normalise their output. Use `golangci-lint` for new projects.

0

interfacer

  • Type: cli
698

Suggest narrower interfaces that can be used.

❤️ Sponsor this project

We are currently looking for partners who want to sponsor hosting and development of the project.

Check out our Github Sponsors page here

Missing an entry? Please let us know.