The Status module that consumes go-ethereum https://status.im
Go to file
Alex Kohler 228bda9fb3 Remove //nolint: gas directives from fmt.Fprintf #590 (#656)
Summary:
Filter out gas linter error checks for fmt.Fprintf commands. This required defining a custom linter around gas that additionally included the offending code.

Notes:

Gas format, without piping it through gometalinter, gives output like this:

$ gas -fmt=csv geth/jail/console/console.go
geth/jail/console/console.go,21,Errors unhandled.,LOW,HIGH,"fmt.Fprintf(w, ""%s: %s"", consoleEventName, formatForConsole(fn.ArgumentList))"
Gometalinter, by default, does not grab the line of code when it filters gas errors. To resolve this, I created a wrapper around gas (I wasn't sure what to call this "gas wrapper", I opted for gasv2, open to other names).

The first part of the regular expression was taken directly from gometalinter (see https://github.com/alecthomas/gometalinter/blob/master/linters.go#L236), and I then appended ,\".*\" to additionally grab the line of code of the offending line. Lastly, I excluded ".*Errors unhandled.*fmt.Fprintf.*" to filter out only fmt.Fprintf errors around omitted errors.

Also as a result of this change, gas lint output will now include the offending code.

Closes #590
2018-02-14 19:58:20 +02:00
.github Update github-bot.yml 2018-02-08 13:00:10 +01:00
_assets Apply geth patches on the fly #653 (#660) 2018-02-14 18:44:27 +01:00
cmd Remove //nolint: gas directives from fmt.Fprintf #590 (#656) 2018-02-14 19:58:20 +02:00
extkeys Fix make lint warnings (#417) 2017-10-20 12:06:22 +03:00
geth Remove //nolint: gas directives from fmt.Fprintf #590 (#656) 2018-02-14 19:58:20 +02:00
lib Remove async operations from node manager (#584) 2018-02-09 14:37:56 +01:00
metrics add node_peers Prometheus metric 2018-02-13 15:18:29 +01:00
profiling Enable gometalinter on tests and fix static analysis issues #631 (#644) 2018-02-12 13:16:06 +02:00
static Add support for metrics (#558) 2018-01-30 12:51:48 +01:00
t Fix async status api (#663) 2018-02-14 17:32:36 +01:00
vendor Apply geth patches on the fly #653 (#660) 2018-02-14 18:44:27 +01:00
.dockerignore Ignore *.test files from all folders (#635) 2018-02-08 14:23:08 +02:00
.gitignore .gitignore: add vim swap files (#545) 2018-01-09 18:28:03 +01:00
.gometalinter.json Remove //nolint: gas directives from fmt.Fprintf #590 (#656) 2018-02-14 19:58:20 +02:00
.travis.yml Fix sync-and-exit option logic (#628) 2018-02-08 10:51:53 +02:00
Gopkg.lock Apply geth patches on the fly #653 (#660) 2018-02-14 18:44:27 +01:00
Gopkg.toml Apply geth patches on the fly #653 (#660) 2018-02-14 18:44:27 +01:00
LICENSE.md
Makefile Apply geth patches on the fly #653 (#660) 2018-02-14 18:44:27 +01:00
README.md Apply geth patches on the fly #653 (#660) 2018-02-14 18:44:27 +01:00

README.md

Status bindings for go-ethereum

TravisCI Builds GoDoc Master Build Status Develop Build Status

Docs

Intro

status-go is an underlying part of Status - a browser, messenger, and gateway to a decentralized world.

It's written in Go and requires Go 1.8 or above.

It uses Makefile to do most common actions. See make help output for available commands.

status-go uses ethereum-go with some patches applied in it, located under vendor/ directory. See geth patches README for more info.

Build

There are two main modes status-go can be built:

  • standalone server
  • library to link for Android or iOS

Use following Makefile commands:

  • make statusgo (builds binary into build/bin/statusd)
  • make statusgo-android) (builds .aar file build/android-16/aar)
  • make statusgo-ios and make statusgo-ios-simulator (builds iOS related artifacts in build/os-9.3/framework)

Testing

To setup accounts passphrase you need to setup an environment variable: export ACCOUNT_PASSWORD="secret_pass_phrase".

Make sure the dependencies are installed first by running:

make lint-install
make mock-install

To test fully statusgo, use:

make ci

To test statusgo using a given network by name, use:

make ci networkid=rinkeby

To test statusgo using a given network by number ID, use:

make ci networkid=3

If you have problems running tests on public network we suggest reading e2e guide.

If you want to launch specific test, for instance RPCSendTransactions, use the following command:

go test -v ./geth/api/ -testify.m ^RPCSendTransaction$

Note -testify.m as testify/suite is used to group individual tests.

Licence

Mozilla Public License 2.0