Go to file
Josh Bleecher Snyder 7da5f193b7 go.tools/cmd/vet: detect stupid boolean conditions
This CL introduces two vet checks. Statistics and code below are from a recent 50mb corpus of public code.

1. Check for redundant conjunctions and disjunctions. This check caught 26 instances, of which 20 were clearly copy/paste bugs and 6 appeared to be mere duplication. A typical example:

if xResolution < 0 || xResolution < 0 {
        panic("SetSize(): width < 0 || height < 0")
}

2. Check for expressions of the form 'x != c1 || x != c2' or 'x == c1 && x == c2', with c1 and c2 constant expressions. This check caught 16 instances, of which all were bugs. A typical example:

if rf.uri.Scheme != "http" || rf.uri.Scheme != "ftp" {
        rf.uri.Scheme = "file"
}

Fixes golang/go#7622.

LGTM=rsc, r
R=golang-codereviews, jscrockett01, r, gri, rsc
CC=golang-codereviews
https://golang.org/cl/98120043
2014-07-02 10:39:57 -07:00
astutil go.tools/astutil: fix edge case in DeleteImport causing merging of import sections. 2014-05-19 14:04:30 -07:00
blog go.tools/blog: strip prefix when serving static content 2013-11-08 13:28:32 +11:00
cmd go.tools/cmd/vet: detect stupid boolean conditions 2014-07-02 10:39:57 -07:00
container/intsets container/intsets: add benchmark of AppendTo method. 2014-06-19 14:35:37 -04:00
cover go.tools/cover: split parsing code out from cmd/cover 2013-12-03 20:55:21 -08:00
dashboard dashboard/app: tag 1.3 release 2014-06-21 07:48:41 +04:00
go go.tools/go/types: type the append([]byte, string...) builtin more correctly 2014-06-27 16:00:54 -07:00
godoc godoc: Order package results by import count. 2014-06-27 12:47:39 -04:00
imports go.tools/imports: fix case where output not gofmt-compatible 2014-05-20 14:02:16 -07:00
oracle go.tools/oracle: remove stale item 2014-06-16 15:46:56 -04:00
playground go.tools/{cmd/present,playground/socket}: add orighost flag to handle the web origin more flexible 2014-06-02 21:39:33 +09:00
present go.tools/present: correctly test empty argument 2014-06-12 16:54:10 -07:00
refactor go.tools/go/types: remove PackageObj Selection - not needed 2014-06-12 18:05:33 -04:00
.hgignore go.tools/.hgignore: don't ignore test-generated files, clean them up. 2014-04-10 13:17:20 -04:00
AUTHORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
CONTRIBUTORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
LICENSE LICENSE: add 2012-03-17 15:20:58 +11:00
PATENTS go.empty: add PATENTS file to the subrepo. 2012-04-16 11:24:04 +10:00
README go.tools/README: minor correction. 2013-10-29 13:20:58 -04:00
codereview.cfg codereview: switch defaultcc to golang-codereviews 2013-12-20 10:54:33 -05:00

README

This subrepository holds the source for various packages and tools that support
the Go programming language.

Some of the tools, godoc and vet for example, are included in binary Go distributions.
Others, including the Go oracle and the test coverage tool, can be fetched with "go get".

Packages include a type-checker for Go and an implementation of the
Static Single Assignment form (SSA) representation for Go programs.

To submit changes to this repository, see http://golang.org/doc/contribute.html.