Merge pull request #3 from alitari/master

Fix rename and enable additional tools
This commit is contained in:
Chuck Lantz
2019-06-28 14:00:07 -05:00
committed by GitHub
7 changed files with 82 additions and 24 deletions

View File

@@ -10,24 +10,6 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get -y install --no-install-recommends apt-utils 2>&1
RUN go get -u -v \
github.com/mdempsky/gocode \
github.com/uudashr/gopkgs/cmd/gopkgs \
github.com/ramya-rao-a/go-outline \
github.com/acroca/go-symbols \
golang.org/x/tools/cmd/guru \
golang.org/x/tools/cmd/gorename \
github.com/rogpeppe/godef \
github.com/zmb3/gogetdoc \
github.com/sqs/goreturns \
golang.org/x/tools/cmd/goimports \
golang.org/x/lint/golint \
github.com/alecthomas/gometalinter \
honnef.co/go/tools/... \
github.com/golangci/golangci-lint/cmd/golangci-lint \
github.com/mgechev/revive \
github.com/derekparker/delve/cmd/dlv 2>&1
# gocode-gomod
RUN go get -x -d github.com/stamblerre/gocode 2>&1 \
&& go build -o gocode-gomod github.com/stamblerre/gocode \
@@ -44,3 +26,29 @@ ENV DEBIAN_FRONTEND=dialog
# Set the default shell to bash rather than sh
ENV SHELL /bin/bash
# go tools
RUN go get -u -v \
github.com/mdempsky/gocode \
github.com/uudashr/gopkgs/cmd/gopkgs \
github.com/ramya-rao-a/go-outline \
github.com/acroca/go-symbols \
github.com/godoctor/godoctor \
golang.org/x/tools/cmd/guru \
golang.org/x/tools/cmd/gorename \
github.com/rogpeppe/godef \
github.com/zmb3/gogetdoc \
github.com/haya14busa/goplay/cmd/goplay \
github.com/sqs/goreturns \
github.com/josharian/impl \
github.com/davidrjenni/reftools/cmd/fillstruct \
github.com/fatih/gomodifytags \
github.com/cweill/gotests/... \
golang.org/x/tools/cmd/goimports \
golang.org/x/lint/golint \
golang.org/x/tools/cmd/gopls \
github.com/alecthomas/gometalinter \
honnef.co/go/tools/... \
github.com/golangci/golangci-lint/cmd/golangci-lint \
github.com/mgechev/revive \
github.com/derekparker/delve/cmd/dlv 2>&1

View File

@@ -11,6 +11,8 @@
"seccomp=unconfined"
],
"settings": {
"go.gopath": "/go"
"go.gopath": "/go",
"go.inferGopath": true,
"go.useLanguageServer": true
}
}

2
.vscode/launch.json vendored
View File

@@ -6,7 +6,7 @@
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}/server.go"
"program": "${workspaceFolder}/src/main/server.go"
}
]
}

4
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"go.useLanguageServer": true,
"go.inferGopath": true
}

View File

@@ -39,7 +39,26 @@ Some things to try:
- Press <kbd>F1</kbd> and run the **Remote-Containers: Forward Port from Container...** command.
- Select port 5000.
- Click "Open Browser" in the notification that appears to access the web app on this new port.
3. **Refactoring - rename:**
- Open `hello.go`, select method name `Hello` press <kbd>F1</kbd> and run the **Rename Symbol** command.
3. **Refactoring - extract:**
- Open `hello.go` and select string, press <kbd>F1</kbd> and run the **Go: Extract to variable** command.
- Open `hello.go` and select line with return statement, press <kbd>F1</kbd> and run the **Go: Extract to function** command.
3. **Generate tests:**
- Open `hello.go` and press <kbd>F1</kbd> and run the **Go: Generate Unit Tests For File** command.
- Implement a test case: Open file `hello_test.go` and edit the line with the `TODO` comment: `{"hello without name", "Hello, "},`
- You can toggle between implementation file and test file with press <kbd>F1</kbd> and run the **Go: Toggle Test File**
- Tests can also run as benchmarks: Open file `hello_test.go`, press <kbd>F1</kbd> and run the **Go: Benchmark File**
4. **Stub generation:** ( [details](https://github.com/josharian/impl))
- define a struct `type mock struct {}`, enter a new line , press <kbd>F1</kbd> and run the **Go: Generate interface stubs** command.
- edit command `m *mock http.ResponseWriter`
4. **Fill structs:** ( [details](https://github.com/davidrjenni/reftools/tree/master/cmd/fillstruct))
- Open `hello.go` and select `user{}` of variable asignment, press <kbd>F1</kbd> and run the **Go: Fill struct** command.
4. **Add json tags to structs:** ( [details](https://github.com/fatih/gomodifytags))
- Open `hello.go` and go with cursor in to a struct, press <kbd>F1</kbd> and run the **Go: Add Tags To Struct Fields** command.
## Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a

24
src/hello/hello.go Normal file
View File

@@ -0,0 +1,24 @@
package hello
import ()
// User user type
type User struct {
ID int64
Name string
Addr *Address
}
// Address address type
type Address struct {
City string
ZIP int
LatLng [2]float64
}
var alex = User{}
// Hello writes a welcome string
func Hello() string {
return "Hello, " + alex.Name
}

View File

@@ -7,17 +7,18 @@ package main
import (
"fmt"
"hello"
"io"
"net/http"
)
func hello(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "Hello remote world!")
func handle(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, hello.Hello())
}
func main() {
portNumber := "9000"
http.HandleFunc("/", hello)
http.HandleFunc("/", handle)
fmt.Println("Server listening on port ", portNumber)
http.ListenAndServe(":"+portNumber, nil)
}