Add Go tool

Review Request #10302 — Created Nov. 1, 2018 and discarded

Information

ReviewBot
master

Reviewers

This patch adds a Go Tool to Review Bot for static analysis of Go code.
It makes use of the following two Go commands:

  1. go tool vet # static code analysis to find possible bugs or suspicious
    constructs

  1. gofmt # formats the code

Manual tests. Successfuly adds issues at the right line numbers.

Description From Last Updated

E999 SyntaxError: EOL while scanning string literal

reviewbotreviewbot

F841 local variable 'vet_output' is assigned to but never used

reviewbotreviewbot

F821 undefined name 'output'

reviewbotreviewbot

Single quotes.

brenniebrennie

No blank line here.

brenniebrennie

We might want to make a note that we are using gofmt over go fmt because the former does not …

brenniebrennie

In the case of a string that contains single quotes, it is more readable to use double quotes, e.g. "%s's …

brenniebrennie

No blank line here.

brenniebrennie

I think this is a typo because line.split(':', 1) will always two values if : is in line. Should this …

brenniebrennie

This can all be one line.

daviddavid

Instead of ignoring all errors, how about just extra_ignore_errors=(2,)

daviddavid

This will put all of the "options" into a single argument. Do we want to use settings['vet_options'].split()?

daviddavid

Slightly better to do vet_args_list.append(path)

daviddavid

The number of = characters should line up with the number of characters in the title: ======= Go Tool =======

daviddavid

Add an additional blank line here.

daviddavid

The "note" is probably not necessary.

daviddavid

The 'go' between run and go vet can be removed?

ilawilaw

Should this be using single quotes?

gojeffchogojeffcho

E202 whitespace before ']'

reviewbotreviewbot
Checks run (1 failed, 1 succeeded)
flake8 failed.
JSHint passed.

flake8

ammar
Review request changed
Commit:
0437f12a63e70c4f5451df2ac466e46de23e795a
32b2511d6d2f75bda3aece4e796e46f6f961c080

Checks run (1 failed, 1 succeeded)

flake8 failed.
JSHint passed.

flake8

ammar
brennie
  1. 
      
  2. bot/reviewbot/tools/go.py (Diff revision 3)
     
     
    Show all issues

    Single quotes.

  3. bot/reviewbot/tools/go.py (Diff revision 3)
     
     
    Show all issues

    No blank line here.

  4. bot/reviewbot/tools/go.py (Diff revision 3)
     
     
    Show all issues

    We might want to make a note that we are using gofmt over go fmt because the former does not allow us to specify options that we want to use.

  5. bot/reviewbot/tools/go.py (Diff revision 3)
     
     
    Show all issues

    In the case of a string that contains single quotes, it is more readable to use double quotes, e.g.

    "%s's formatting differs from gofmt's"

  6. bot/reviewbot/tools/go.py (Diff revision 3)
     
     
    Show all issues

    No blank line here.

  7. bot/reviewbot/tools/go.py (Diff revision 3)
     
     
    Show all issues

    I think this is a typo because line.split(':', 1) will always two values if : is in line. Should this say If split does not return two values?

    Also this should be in the except block.

    Comments must be proper sentences.

  8. 
      
ammar
ammar
david
  1. 
      
  2. bot/reviewbot/tools/go.py (Diff revision 4)
     
     
     
     
     
     
    Show all issues

    This can all be one line.

    1. This is the same pattern as in other tools (flake8, cpplint etc). Would you still like to change it?

  3. bot/reviewbot/tools/go.py (Diff revision 4)
     
     
    Show all issues

    Instead of ignoring all errors, how about just extra_ignore_errors=(2,)

  4. bot/reviewbot/tools/go.py (Diff revision 4)
     
     
    Show all issues

    This will put all of the "options" into a single argument. Do we want to use settings['vet_options'].split()?

    1. Yes, that makes more sense.

  5. bot/reviewbot/tools/go.py (Diff revision 4)
     
     
    Show all issues

    Slightly better to do vet_args_list.append(path)

  6. docs/reviewbot/tools/gotool.rst (Diff revision 4)
     
     
     
    Show all issues

    The number of = characters should line up with the number of characters in the title:

    =======
    Go Tool
    =======
    
  7. docs/reviewbot/tools/gotool.rst (Diff revision 4)
     
     
    Show all issues

    Add an additional blank line here.

  8. docs/reviewbot/tools/gotool.rst (Diff revision 4)
     
     
     
    Show all issues

    The "note" is probably not necessary.

  9. 
      
ammar
ilaw
  1. 
      
  2. The command is sometimes referred to as go tool vet and sometimes go vet - should it be one or the other?

  3. bot/reviewbot/tools/go.py (Diff revision 5)
     
     
    Show all issues

    The 'go' between run and go vet can be removed?

  4. 
      
gojeffcho
  1. 
      
  2. bot/reviewbot/tools/go.py (Diff revision 5)
     
     
    Show all issues

    Should this be using single quotes?

    1. Singles quotes are used inside the string, so we decided in a previous issue to do it this way.

  3. 
      
ammar
ammar
Review request changed
Commit:
aa2326d7df0c65f9d2f034b18fd8a1b3d1ddbce8
156730edb71f2f8c74271c923b45c55ef25b4381

Checks run (1 failed, 1 succeeded)

flake8 failed.
JSHint passed.

flake8

ammar
david
Review request changed
Status:
Discarded