Preparing report...

Report for github.com/dgrr/pako

A+    Excellent!    Found 35 issues across 100 files

Tweet

gofmt99%

Gofmt formats Go programs. We run gofmt -s on your code, where -s is for the "simplify" command


go_vet100%

go vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string.

No problems detected. Good job!


gocyclo80%

Gocyclo calculates cyclomatic complexities of functions in Go source code. The cyclomatic complexity of a function is calculated according to the following rules: 1 is the base complexity of a function +1 for each 'if', 'for', 'case', '&&' or '||' Go Report Card warns on functions with cyclomatic complexity > 15.

    • pako/env/envValues_test.go
    • Line 176: warning: cyclomatic complexity 61 of function TestDefineModify() is high (> 15) (gocyclo)
    • Line 54: warning: cyclomatic complexity 31 of function TestDefineAndGet() is high (> 15) (gocyclo)
    • pako/vm/vmStmt.go
    • Line 59: warning: cyclomatic complexity 221 of function (*runInfoStruct).runSingleStmt() is high (> 15) (gocyclo)
    • pako/vm/vmLetExpr.go
    • Line 11: warning: cyclomatic complexity 74 of function (*runInfoStruct).invokeLetExpr() is high (> 15) (gocyclo)
    • pako/vm/vmExprFunction.go
    • Line 315: warning: cyclomatic complexity 63 of function (*runInfoStruct).makeCallArgs() is high (> 15) (gocyclo)
    • Line 193: warning: cyclomatic complexity 20 of function (*runInfoStruct).callExpr() is high (> 15) (gocyclo)
    • pako/ast/astutil/walk.go
    • Line 40: warning: cyclomatic complexity 47 of function walkStmt() is high (> 15) (gocyclo)
    • Line 151: warning: cyclomatic complexity 39 of function walkExpr() is high (> 15) (gocyclo)
    • pako/vm/vmExpr.go
    • Line 12: warning: cyclomatic complexity 168 of function (*runInfoStruct).invokeExpr() is high (> 15) (gocyclo)
    • pako/pako.go
    • Line 163: warning: cyclomatic complexity 18 of function runInteractive() is high (> 15) (gocyclo)
    • pako/env/env_test.go
    • Line 44: warning: cyclomatic complexity 63 of function TestGetEnvFromPath() is high (> 15) (gocyclo)
    • Line 289: warning: cyclomatic complexity 33 of function TestCopy() is high (> 15) (gocyclo)
    • pako/vm/vm.go
    • Line 413: warning: cyclomatic complexity 27 of function makeType() is high (> 15) (gocyclo)
    • Line 260: warning: cyclomatic complexity 25 of function equal() is high (> 15) (gocyclo)
    • Line 353: warning: cyclomatic complexity 24 of function appendSlice() is high (> 15) (gocyclo)
    • Line 534: warning: cyclomatic complexity 18 of function makeValue() is high (> 15) (gocyclo)
    • pako/pako_test.go
    • Line 95: warning: cyclomatic complexity 33 of function runInteractiveTests() is high (> 15) (gocyclo)

golint87%

Golint is a linter for Go source code.

    • pako/over/index.go
    • Line 9: warning: exported var ErrOutOfRange should have comment or be unexported (golint)
    • Line 13: warning: exported type Index should have comment or be unexported (golint)
    • Line 19: warning: exported var IndexReflectType should have comment or be unexported (golint)
    • Line 21: warning: exported type IndexImpl should have comment or be unexported (golint)
    • Line 23: warning: exported method IndexImpl.Index should have comment or be unexported (golint)
    • pako/over/len.go
    • Line 5: warning: exported type Len should have comment or be unexported (golint)
    • Line 10: warning: exported var LenReflectType should have comment or be unexported (golint)
    • Line 12: warning: exported type LenImpl should have comment or be unexported (golint)
    • Line 14: warning: exported method LenImpl.Len should have comment or be unexported (golint)
    • pako/over/multiply.go
    • Line 5: warning: exported type Multiply should have comment or be unexported (golint)
    • Line 20: warning: exported var MultiplyReflectType should have comment or be unexported (golint)
    • Line 22: warning: exported type MultiplyImpl should have comment or be unexported (golint)
    • Line 24: warning: exported method MultiplyImpl.Mul should have comment or be unexported (golint)
    • Line 28: warning: exported method MultiplyImpl.Div should have comment or be unexported (golint)
    • Line 32: warning: exported method MultiplyImpl.Mod should have comment or be unexported (golint)
    • Line 36: warning: exported method MultiplyImpl.Left should have comment or be unexported (golint)
    • Line 40: warning: exported method MultiplyImpl.Right should have comment or be unexported (golint)
    • Line 44: warning: exported method MultiplyImpl.And should have comment or be unexported (golint)
    • pako/over/string.go
    • Line 8: warning: exported type String should have comment or be unexported (golint)
    • Line 13: warning: exported var StringReflectType should have comment or be unexported (golint)
    • Line 15: warning: exported type StringImpl should have comment or be unexported (golint)
    • pako/over/assign.go
    • Line 5: warning: exported type Set should have comment or be unexported (golint)
    • Line 10: warning: exported var SetReflectType should have comment or be unexported (golint)
    • Line 12: warning: exported type SetImpl should have comment or be unexported (golint)
    • Line 14: warning: exported method SetImpl.Set should have comment or be unexported (golint)
    • pako/over/binary.go
    • Line 5: warning: exported type Binary should have comment or be unexported (golint)
    • Line 10: warning: exported var BinaryReflectType should have comment or be unexported (golint)
    • Line 12: warning: exported type BinaryImpl should have comment or be unexported (golint)
    • Line 14: warning: exported method BinaryImpl.Binary should have comment or be unexported (golint)
    • pako/over/comparison.go
    • Line 5: warning: exported type Comparison should have comment or be unexported (golint)
    • Line 20: warning: exported var ComparisonReflectType should have comment or be unexported (golint)
    • Line 22: warning: exported type ComparisonImpl should have comment or be unexported (golint)
    • Line 24: warning: exported method ComparisonImpl.Equals should have comment or be unexported (golint)
    • Line 28: warning: exported method ComparisonImpl.Distinct should have comment or be unexported (golint)
    • Line 32: warning: exported method ComparisonImpl.Less should have comment or be unexported (golint)
    • Line 36: warning: exported method ComparisonImpl.LessEquals should have comment or be unexported (golint)
    • Line 40: warning: exported method ComparisonImpl.Greater should have comment or be unexported (golint)
    • Line 44: warning: exported method ComparisonImpl.GreaterEquals should have comment or be unexported (golint)
    • pako/env/env.go
    • Line 74: warning: comment on exported type ImportFrom should be of the form "ImportFrom ..." (with optional leading article) (golint)
    • pako/over/mem.go
    • Line 7: warning: exported type Mem should have comment or be unexported (golint)
    • Line 12: warning: exported var MemReflectType should have comment or be unexported (golint)
    • Line 14: warning: exported type MemImpl should have comment or be unexported (golint)
    • Line 16: warning: exported method MemImpl.New should have comment or be unexported (golint)
    • pako/packages/init.go
    • Line 4: warning: a blank import should be only in a main or test package, or have a comment justifying it (golint)
    • pako/ast/stmt.go
    • Line 25: warning: exported type ImportStmt should have comment or be unexported (golint)
    • Line 32: warning: exported type StructStmt should have comment or be unexported (golint)
    • pako/over/add.go
    • Line 5: warning: exported type Add should have comment or be unexported (golint)
    • Line 14: warning: exported var AddReflectType should have comment or be unexported (golint)
    • Line 16: warning: exported type AddImpl should have comment or be unexported (golint)
    • Line 18: warning: exported method AddImpl.Add should have comment or be unexported (golint)
    • Line 22: warning: exported method AddImpl.Sub should have comment or be unexported (golint)
    • Line 26: warning: exported method AddImpl.Or should have comment or be unexported (golint)

license100%

Checks whether your project has a LICENSE file.

No problems detected. Good job!


ineffassign98%

IneffAssign detects ineffectual assignments in Go code.

    • /home/shawn/mygo/src/github.com/gojp/goreportcard/_repos/src/github.com/dgrr/pako/parser/lexer.go
    • Line 45: warning: undeclared name: FUNC (ineffassign)
    • Line 46: warning: undeclared name: RETURN (ineffassign)
    • Line 47: warning: undeclared name: VAR (ineffassign)
    • Line 48: warning: undeclared name: THROW (ineffassign)
    • Line 49: warning: undeclared name: IF (ineffassign)
    • Line 50: warning: undeclared name: FOR (ineffassign)
    • Line 51: warning: undeclared name: BREAK (ineffassign)
    • Line 52: warning: undeclared name: CONTINUE (ineffassign)
    • Line 53: warning: undeclared name: IN (ineffassign)
    • Line 54: warning: undeclared name: ELSE (ineffassign)
    • Line 55: warning: undeclared name: NEW (ineffassign)
    • Line 56: warning: undeclared name: TRUE (ineffassign)
    • Line 57: warning: undeclared name: FALSE (ineffassign)
    • Line 58: warning: undeclared name: NIL (ineffassign)
    • Line 59: warning: undeclared name: MODULE (ineffassign)
    • Line 60: warning: undeclared name: TRY (ineffassign)
    • Line 61: warning: undeclared name: CATCH (ineffassign)
    • Line 62: warning: undeclared name: FINALLY (ineffassign)
    • Line 63: warning: undeclared name: SWITCH (ineffassign)
    • Line 64: warning: undeclared name: CASE (ineffassign)
    • Line 65: warning: undeclared name: DEFAULT (ineffassign)
    • Line 66: warning: undeclared name: GO (ineffassign)
    • Line 67: warning: undeclared name: CHAN (ineffassign)
    • Line 68: warning: undeclared name: STRUCT (ineffassign)
    • Line 69: warning: undeclared name: MAKE (ineffassign)
    • Line 70: warning: undeclared name: TYPE (ineffassign)
    • Line 71: warning: undeclared name: LEN (ineffassign)
    • Line 72: warning: undeclared name: DELETE (ineffassign)
    • Line 73: warning: undeclared name: CLOSE (ineffassign)
    • Line 74: warning: undeclared name: MAP (ineffassign)
    • Line 75: warning: undeclared name: IMPORT (ineffassign)
    • Line 76: warning: undeclared name: AS (ineffassign)
    • Line 568: warning: undeclared name: yySymType (ineffassign)
    • Line 45: warning: undeclared name: FUNC (ineffassign)
    • Line 46: warning: undeclared name: RETURN (ineffassign)
    • Line 47: warning: undeclared name: VAR (ineffassign)
    • Line 48: warning: undeclared name: THROW (ineffassign)
    • Line 49: warning: undeclared name: IF (ineffassign)
    • Line 50: warning: undeclared name: FOR (ineffassign)
    • Line 51: warning: undeclared name: BREAK (ineffassign)
    • Line 52: warning: undeclared name: CONTINUE (ineffassign)
    • Line 53: warning: undeclared name: IN (ineffassign)
    • Line 54: warning: undeclared name: ELSE (ineffassign)
    • Line 55: warning: undeclared name: NEW (ineffassign)
    • Line 56: warning: undeclared name: TRUE (ineffassign)
    • Line 57: warning: undeclared name: FALSE (ineffassign)
    • Line 58: warning: undeclared name: NIL (ineffassign)
    • Line 59: warning: undeclared name: MODULE (ineffassign)
    • Line 60: warning: undeclared name: TRY (ineffassign)
    • Line 61: warning: undeclared name: CATCH (ineffassign)
    • Line 62: warning: undeclared name: FINALLY (ineffassign)
    • Line 63: warning: undeclared name: SWITCH (ineffassign)
    • Line 64: warning: undeclared name: CASE (ineffassign)
    • Line 65: warning: undeclared name: DEFAULT (ineffassign)
    • Line 66: warning: undeclared name: GO (ineffassign)
    • Line 67: warning: undeclared name: CHAN (ineffassign)
    • Line 68: warning: undeclared name: STRUCT (ineffassign)
    • Line 69: warning: undeclared name: MAKE (ineffassign)
    • Line 70: warning: undeclared name: TYPE (ineffassign)
    • Line 71: warning: undeclared name: LEN (ineffassign)
    • Line 72: warning: undeclared name: DELETE (ineffassign)
    • Line 73: warning: undeclared name: CLOSE (ineffassign)
    • Line 74: warning: undeclared name: MAP (ineffassign)
    • Line 75: warning: undeclared name: IMPORT (ineffassign)
    • Line 76: warning: undeclared name: AS (ineffassign)
    • Line 568: warning: undeclared name: yySymType (ineffassign)
    • Line 45: warning: undeclared name: FUNC (ineffassign)
    • Line 46: warning: undeclared name: RETURN (ineffassign)
    • Line 47: warning: undeclared name: VAR (ineffassign)
    • Line 48: warning: undeclared name: THROW (ineffassign)
    • Line 49: warning: undeclared name: IF (ineffassign)
    • Line 50: warning: undeclared name: FOR (ineffassign)
    • Line 51: warning: undeclared name: BREAK (ineffassign)
    • Line 52: warning: undeclared name: CONTINUE (ineffassign)
    • Line 53: warning: undeclared name: IN (ineffassign)
    • Line 54: warning: undeclared name: ELSE (ineffassign)
    • Line 55: warning: undeclared name: NEW (ineffassign)
    • Line 56: warning: undeclared name: TRUE (ineffassign)
    • Line 57: warning: undeclared name: FALSE (ineffassign)
    • Line 58: warning: undeclared name: NIL (ineffassign)
    • Line 59: warning: undeclared name: MODULE (ineffassign)
    • Line 60: warning: undeclared name: TRY (ineffassign)
    • Line 61: warning: undeclared name: CATCH (ineffassign)
    • Line 62: warning: undeclared name: FINALLY (ineffassign)
    • Line 63: warning: undeclared name: SWITCH (ineffassign)
    • Line 64: warning: undeclared name: CASE (ineffassign)
    • Line 65: warning: undeclared name: DEFAULT (ineffassign)
    • Line 66: warning: undeclared name: GO (ineffassign)
    • Line 67: warning: undeclared name: CHAN (ineffassign)
    • Line 68: warning: undeclared name: STRUCT (ineffassign)
    • Line 69: warning: undeclared name: MAKE (ineffassign)
    • Line 70: warning: undeclared name: TYPE (ineffassign)
    • Line 71: warning: undeclared name: LEN (ineffassign)
    • Line 72: warning: undeclared name: DELETE (ineffassign)
    • Line 73: warning: undeclared name: CLOSE (ineffassign)
    • Line 74: warning: undeclared name: MAP (ineffassign)
    • Line 75: warning: undeclared name: IMPORT (ineffassign)
    • Line 76: warning: undeclared name: AS (ineffassign)
    • Line 568: warning: undeclared name: yySymType (ineffassign)
    • pako/parser/lexer.go
    • Line 45: warning: undeclared name: FUNC (ineffassign)
    • Line 46: warning: undeclared name: RETURN (ineffassign)
    • Line 47: warning: undeclared name: VAR (ineffassign)
    • Line 48: warning: undeclared name: THROW (ineffassign)
    • Line 49: warning: undeclared name: IF (ineffassign)
    • Line 50: warning: undeclared name: FOR (ineffassign)
    • Line 51: warning: undeclared name: BREAK (ineffassign)
    • Line 52: warning: undeclared name: CONTINUE (ineffassign)
    • Line 53: warning: undeclared name: IN (ineffassign)
    • Line 54: warning: undeclared name: ELSE (ineffassign)
    • Line 55: warning: undeclared name: NEW (ineffassign)
    • Line 56: warning: undeclared name: TRUE (ineffassign)
    • Line 57: warning: undeclared name: FALSE (ineffassign)
    • Line 58: warning: undeclared name: NIL (ineffassign)
    • Line 59: warning: undeclared name: MODULE (ineffassign)
    • Line 60: warning: undeclared name: TRY (ineffassign)
    • Line 61: warning: undeclared name: CATCH (ineffassign)
    • Line 62: warning: undeclared name: FINALLY (ineffassign)
    • Line 63: warning: undeclared name: SWITCH (ineffassign)
    • Line 64: warning: undeclared name: CASE (ineffassign)
    • Line 65: warning: undeclared name: DEFAULT (ineffassign)
    • Line 66: warning: undeclared name: GO (ineffassign)
    • Line 67: warning: undeclared name: CHAN (ineffassign)
    • Line 68: warning: undeclared name: STRUCT (ineffassign)
    • Line 69: warning: undeclared name: MAKE (ineffassign)
    • Line 70: warning: undeclared name: TYPE (ineffassign)
    • Line 71: warning: undeclared name: LEN (ineffassign)
    • Line 72: warning: undeclared name: DELETE (ineffassign)
    • Line 73: warning: undeclared name: CLOSE (ineffassign)
    • Line 74: warning: undeclared name: MAP (ineffassign)
    • Line 75: warning: undeclared name: IMPORT (ineffassign)
    • Line 76: warning: undeclared name: AS (ineffassign)
    • Line 568: warning: undeclared name: yySymType (ineffassign)
    • Line 105: warning: undeclared name: IDENT (ineffassign)
    • Line 108: warning: undeclared name: NUMBER (ineffassign)
    • Line 114: warning: undeclared name: STRING (ineffassign)
    • Line 120: warning: undeclared name: STRING (ineffassign)
    • Line 126: warning: undeclared name: STRING (ineffassign)
    • Line 144: warning: undeclared name: NEQ (ineffassign)
    • Line 155: warning: undeclared name: EQEQ (ineffassign)
    • Line 161: warning: undeclared name: EQOPCHAN (ineffassign)
    • Line 177: warning: undeclared name: NILCOALESCE (ineffassign)
    • Line 188: warning: undeclared name: PLUSPLUS (ineffassign)
    • Line 191: warning: undeclared name: PLUSEQ (ineffassign)
    • Line 202: warning: undeclared name: MINUSMINUS (ineffassign)
    • Line 205: warning: undeclared name: MINUSEQ (ineffassign)
    • Line 216: warning: undeclared name: MULEQ (ineffassign)
    • Line 227: warning: undeclared name: DIVEQ (ineffassign)
    • Line 257: warning: undeclared name: GE (ineffassign)
    • Line 260: warning: undeclared name: SHIFTRIGHT (ineffassign)
    • Line 271: warning: undeclared name: OPCHAN (ineffassign)
    • Line 274: warning: undeclared name: LE (ineffassign)
    • Line 277: warning: undeclared name: SHIFTLEFT (ineffassign)
    • Line 288: warning: undeclared name: OROR (ineffassign)
    • Line 291: warning: undeclared name: OREQ (ineffassign)
    • Line 302: warning: undeclared name: ANDAND (ineffassign)
    • Line 305: warning: undeclared name: ANDEQ (ineffassign)
    • Line 317: warning: undeclared name: VARARG (ineffassign)
    • Line 606: warning: undeclared name: yyParse (ineffassign)
    • Line 614: warning: undeclared name: yyErrorVerbose (ineffassign)
    • Line 619: warning: undeclared name: yyDebug (ineffassign)
    • Line 45: warning: undeclared name: FUNC (ineffassign)
    • Line 46: warning: undeclared name: RETURN (ineffassign)
    • Line 47: warning: undeclared name: VAR (ineffassign)
    • Line 48: warning: undeclared name: THROW (ineffassign)
    • Line 49: warning: undeclared name: IF (ineffassign)
    • Line 50: warning: undeclared name: FOR (ineffassign)
    • Line 51: warning: undeclared name: BREAK (ineffassign)
    • Line 52: warning: undeclared name: CONTINUE (ineffassign)
    • Line 53: warning: undeclared name: IN (ineffassign)
    • Line 54: warning: undeclared name: ELSE (ineffassign)
    • Line 55: warning: undeclared name: NEW (ineffassign)
    • Line 56: warning: undeclared name: TRUE (ineffassign)
    • Line 57: warning: undeclared name: FALSE (ineffassign)
    • Line 58: warning: undeclared name: NIL (ineffassign)
    • Line 59: warning: undeclared name: MODULE (ineffassign)
    • Line 60: warning: undeclared name: TRY (ineffassign)
    • Line 61: warning: undeclared name: CATCH (ineffassign)
    • Line 62: warning: undeclared name: FINALLY (ineffassign)
    • Line 63: warning: undeclared name: SWITCH (ineffassign)
    • Line 64: warning: undeclared name: CASE (ineffassign)
    • Line 65: warning: undeclared name: DEFAULT (ineffassign)
    • Line 66: warning: undeclared name: GO (ineffassign)
    • Line 67: warning: undeclared name: CHAN (ineffassign)
    • Line 68: warning: undeclared name: STRUCT (ineffassign)
    • Line 69: warning: undeclared name: MAKE (ineffassign)
    • Line 70: warning: undeclared name: TYPE (ineffassign)
    • Line 71: warning: undeclared name: LEN (ineffassign)
    • Line 72: warning: undeclared name: DELETE (ineffassign)
    • Line 73: warning: undeclared name: CLOSE (ineffassign)
    • Line 74: warning: undeclared name: MAP (ineffassign)
    • Line 75: warning: undeclared name: IMPORT (ineffassign)
    • Line 76: warning: undeclared name: AS (ineffassign)
    • Line 568: warning: undeclared name: yySymType (ineffassign)

misspell100%

Misspell Finds commonly misspelled English words

No problems detected. Good job!