From 5079680558fd189416c773ceb1e957217d3fea13 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Jul 2026 08:17:28 +0000 Subject: [PATCH 1/4] Initial plan From e34375c0cce4c80d60ab9785b22e815a041a1232 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Jul 2026 08:22:53 +0000 Subject: [PATCH 2/4] Add subst resolution for Kotlin and Go extractors --- go/extractor/BUILD.bazel | 1 + go/extractor/extractor.go | 5 +- go/extractor/subst/BUILD.bazel | 18 ++++ go/extractor/subst/subst.go | 30 +++++++ go/extractor/subst/subst_other.go | 6 ++ go/extractor/subst/subst_test.go | 86 +++++++++++++++++++ go/extractor/subst/subst_windows.go | 67 +++++++++++++++ .../java/com/semmle/util/files/FileUtil.java | 5 +- .../com/semmle/util/files/SubstResolver.java | 76 ++++++++++++++++ 9 files changed, 290 insertions(+), 4 deletions(-) create mode 100644 go/extractor/subst/BUILD.bazel create mode 100644 go/extractor/subst/subst.go create mode 100644 go/extractor/subst/subst_other.go create mode 100644 go/extractor/subst/subst_test.go create mode 100644 go/extractor/subst/subst_windows.go create mode 100644 java/kotlin-extractor/src/main/java/com/semmle/util/files/SubstResolver.java diff --git a/go/extractor/BUILD.bazel b/go/extractor/BUILD.bazel index 23158e25b15f..c8e66c98d213 100644 --- a/go/extractor/BUILD.bazel +++ b/go/extractor/BUILD.bazel @@ -19,6 +19,7 @@ go_library( "//go/extractor/dbscheme", "//go/extractor/diagnostics", "//go/extractor/srcarchive", + "//go/extractor/subst", "//go/extractor/toolchain", "//go/extractor/trap", "//go/extractor/util", diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index 158f0029704d..e3d134a522d6 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -25,6 +25,7 @@ import ( "github.com/github/codeql-go/extractor/dbscheme" "github.com/github/codeql-go/extractor/diagnostics" "github.com/github/codeql-go/extractor/srcarchive" + "github.com/github/codeql-go/extractor/subst" "github.com/github/codeql-go/extractor/toolchain" "github.com/github/codeql-go/extractor/trap" "github.com/github/codeql-go/extractor/util" @@ -764,9 +765,9 @@ func normalizedPath(ast *ast.File, fset *token.FileSet) string { file := fset.File(ast.Package).Name() path, err := filepath.EvalSymlinks(file) if err != nil { - return file + path = file } - return path + return subst.ResolvePath(path) } // extractFile extracts AST information for the given file diff --git a/go/extractor/subst/BUILD.bazel b/go/extractor/subst/BUILD.bazel new file mode 100644 index 000000000000..a1975f3312af --- /dev/null +++ b/go/extractor/subst/BUILD.bazel @@ -0,0 +1,18 @@ +load("@rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "subst", + srcs = [ + "subst.go", + "subst_other.go", + "subst_windows.go", + ], + importpath = "github.com/github/codeql-go/extractor/subst", + visibility = ["//go:__subpackages__"], +) + +go_test( + name = "subst_test", + srcs = ["subst_test.go"], + embed = [":subst"], +) diff --git a/go/extractor/subst/subst.go b/go/extractor/subst/subst.go new file mode 100644 index 000000000000..885f9f09a816 --- /dev/null +++ b/go/extractor/subst/subst.go @@ -0,0 +1,30 @@ +package subst + +// ResolvePath resolves subst'd drive letters in a full path. +// If the path starts with a subst'd drive letter, replaces it with the backing path. +// Otherwise returns the path unchanged. +func ResolvePath(path string) string { + return resolvePath(path, ResolveDrive) +} + +func resolvePath(path string, resolveDrive func(string) string) string { + if len(path) < 3 { + return path + } + if path[1] != ':' { + return path + } + if path[2] != '\\' && path[2] != '/' { + return path + } + c := path[0] + if !((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) { + return path + } + + resolved := resolveDrive(path[:3]) + if resolved == "" { + return path + } + return resolved + path[2:] +} diff --git a/go/extractor/subst/subst_other.go b/go/extractor/subst/subst_other.go new file mode 100644 index 000000000000..8e153bf3bd62 --- /dev/null +++ b/go/extractor/subst/subst_other.go @@ -0,0 +1,6 @@ +//go:build !windows + +package subst + +// ResolveDrive is a no-op on non-Windows platforms. +func ResolveDrive(driveRoot string) string { return "" } diff --git a/go/extractor/subst/subst_test.go b/go/extractor/subst/subst_test.go new file mode 100644 index 000000000000..28a23849a8a2 --- /dev/null +++ b/go/extractor/subst/subst_test.go @@ -0,0 +1,86 @@ +package subst + +import "testing" + +func TestResolvePath(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + path string + resolveRoot string + resolved string + expected string + }{ + { + name: "resolved backslash path", + path: `X:\dir\file.go`, + resolveRoot: `X:\`, + resolved: `C:\target`, + expected: `C:\target\dir\file.go`, + }, + { + name: "resolved slash path", + path: `X:/dir/file.go`, + resolveRoot: `X:/`, + resolved: `C:\target`, + expected: `C:\target/dir/file.go`, + }, + { + name: "lowercase drive letter", + path: `x:\dir\file.go`, + resolveRoot: `x:\`, + resolved: `C:\target`, + expected: `C:\target\dir\file.go`, + }, + { + name: "unresolved drive", + path: `X:\dir\file.go`, + resolveRoot: `X:\`, + expected: `X:\dir\file.go`, + }, + { + name: "relative path", + path: `dir\file.go`, + expected: `dir\file.go`, + }, + { + name: "non drive prefix", + path: `\\server\share\file.go`, + expected: `\\server\share\file.go`, + }, + { + name: "missing separator after colon", + path: `X:file.go`, + expected: `X:file.go`, + }, + } + + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + t.Parallel() + + resolveCalls := 0 + actual := resolvePath(test.path, func(driveRoot string) string { + resolveCalls++ + if driveRoot != test.resolveRoot { + t.Fatalf("resolvePath passed drive root %q, want %q", driveRoot, test.resolveRoot) + } + return test.resolved + }) + + if actual != test.expected { + t.Fatalf("resolvePath(%q) = %q, want %q", test.path, actual, test.expected) + } + + wantCalls := 0 + if test.resolveRoot != "" { + wantCalls = 1 + } + if resolveCalls != wantCalls { + t.Fatalf("resolvePath(%q) made %d resolve calls, want %d", test.path, resolveCalls, wantCalls) + } + }) + } +} diff --git a/go/extractor/subst/subst_windows.go b/go/extractor/subst/subst_windows.go new file mode 100644 index 000000000000..cb6a60984c05 --- /dev/null +++ b/go/extractor/subst/subst_windows.go @@ -0,0 +1,67 @@ +//go:build windows + +package subst + +import ( + "os" + "path/filepath" + "syscall" + "unsafe" +) + +var ( + dll *syscall.DLL + procResolve *syscall.Proc + procFree *syscall.Proc + available bool +) + +func init() { + dist := os.Getenv("CODEQL_DIST") + if dist == "" { + return + } + dllPath := filepath.Join(dist, "tools", "win64", "canonicalize.dll") + d, err := syscall.LoadDLL(dllPath) + if err != nil { + return + } + p, err := d.FindProc("resolve_subst_u8") + if err != nil { + return + } + f, _ := d.FindProc("resolve_subst_free_u8") + dll = d + procResolve = p + procFree = f + available = true +} + +// ResolveDrive resolves a subst'd drive root (e.g. "X:\") to its backing path. +// Returns "" if the drive is not subst'd or on error. +func ResolveDrive(driveRoot string) string { + if !available { + return "" + } + driveBytes := append([]byte(driveRoot), 0) + ret, _, _ := procResolve.Call(uintptr(unsafe.Pointer(&driveBytes[0]))) + if ret == 0 { + return "" + } + result := goString((*byte)(unsafe.Pointer(ret))) + if procFree != nil { + procFree.Call(ret) + } + return result +} + +func goString(p *byte) string { + if p == nil { + return "" + } + var n int + for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ { + ptr = unsafe.Add(ptr, 1) + } + return string(unsafe.Slice(p, n)) +} diff --git a/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java b/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java index 79ce2d8d8d3d..974a72be4b06 100644 --- a/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java +++ b/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java @@ -1242,12 +1242,13 @@ public static String relativePathLink (File f, File base) public static File tryMakeCanonical (File f) { try { - return f.getCanonicalFile(); + f = f.getCanonicalFile(); } catch (IOException ignored) { Exceptions.ignore(ignored, "Can't log error: Could be too verbose."); - return new File(simplifyPath(f)); + f = new File(simplifyPath(f)); } + return SubstResolver.resolve(f); } diff --git a/java/kotlin-extractor/src/main/java/com/semmle/util/files/SubstResolver.java b/java/kotlin-extractor/src/main/java/com/semmle/util/files/SubstResolver.java new file mode 100644 index 000000000000..f7cf6364b64e --- /dev/null +++ b/java/kotlin-extractor/src/main/java/com/semmle/util/files/SubstResolver.java @@ -0,0 +1,76 @@ +package com.semmle.util.files; + +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * Resolves Windows {@code subst}ed drive letters to their underlying paths. On non-Windows + * platforms, or when the native library failed to load, {@link #resolve(File)} is a no-op that + * returns its argument unchanged. + */ +public class SubstResolver { + private static final boolean available; + + static { + boolean loaded = false; + if (File.separatorChar == '\\') { + String dist = System.getenv("CODEQL_DIST"); + if (dist != null && !dist.isEmpty()) { + try { + Path library = Paths.get(dist).resolve("tools").resolve("win64") + .resolve("canonicalize.dll").toAbsolutePath(); + System.load(library.toString()); + loaded = true; + } catch (RuntimeException | UnsatisfiedLinkError ignored) { + } + } + } + available = loaded; + } + + private SubstResolver() {} + + /** + * Given a drive root like {@code "X:\\"}, returns the path that drive is + * {@code subst}ed to, or {@code null} if the letter isn't a subst mapping. + */ + private static native String nativeResolveSubst(String driveRoot); + + /** + * If {@code f} is an absolute path starting with a {@code subst}ed drive letter, return an + * equivalent path with the drive letter replaced by its target. Otherwise return {@code f} + * unchanged. + */ + public static File resolve(File f) { + if (!available) { + return f; + } + String path = f.getPath(); + if (path.length() < 3 || path.charAt(1) != ':') { + return f; + } + char sep = path.charAt(2); + if (sep != '\\' && sep != '/') { + return f; + } + if (!isDriveLetter(path.charAt(0))) { + return f; + } + + String resolved = nativeResolveSubst(path.substring(0, 3)); + if (resolved == null) { + return f; + } + + return new File(resolved + path.substring(2)); + } + + private static boolean isDriveLetter(char c) { + return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'); + } + + public static boolean isAvailable() { + return available; + } +} From 068859d338bc07dc4660807bad034338841042f3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Jul 2026 08:26:17 +0000 Subject: [PATCH 3/4] Apply remaining changes --- .../package-not-found-with-go-mod/work/go.mod | 4 -- .../package-not-found-with-go-mod/work/go.sum | 1 - .../go-mod-without-version/src/go.mod | 1 + .../test-extraction/src/go.sum | 45 ------------------- .../traced-extraction/src/go.sum | 45 ------------------- .../src/subdir2/go.mod | 4 +- .../src/subdir2/go.sum | 31 +------------ .../extractor-tests/go-mod-comments/go.mod | 3 +- go/ql/test/go.mod | 1 - .../semmle/go/dependencies/codeql-go/go.mod | 5 --- .../semmle/go/dependencies/sweb/go.mod | 26 ----------- 11 files changed, 5 insertions(+), 161 deletions(-) diff --git a/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.mod b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.mod index 52f47d8d3e25..eb0b661feb98 100644 --- a/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.mod +++ b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.mod @@ -1,7 +1,3 @@ go 1.19 -require ( - github.com/linode/linode-docs-theme v0.0.0-20220622135843-166f108e1933 -) - module test diff --git a/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.sum b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.sum index c4c3e8d972df..e69de29bb2d1 100644 --- a/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.sum +++ b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.sum @@ -1 +0,0 @@ -github.com/linode/linode-docs-theme v0.0.0-20220622135843-166f108e1933 h1:QchGQS6xESuyjdlNJEjvq2ftGX0sCTAhPhD5hAOJVMI= diff --git a/go/ql/integration-tests/go-mod-without-version/src/go.mod b/go/ql/integration-tests/go-mod-without-version/src/go.mod index 95a82c8aaf51..ded1135300c5 100644 --- a/go/ql/integration-tests/go-mod-without-version/src/go.mod +++ b/go/ql/integration-tests/go-mod-without-version/src/go.mod @@ -4,3 +4,4 @@ require golang.org/x/sys v0.18.0 // indirect module test +go 1.24.13 diff --git a/go/ql/integration-tests/test-extraction/src/go.sum b/go/ql/integration-tests/test-extraction/src/go.sum index a8e1b59ae4b1..e69de29bb2d1 100644 --- a/go/ql/integration-tests/test-extraction/src/go.sum +++ b/go/ql/integration-tests/test-extraction/src/go.sum @@ -1,45 +0,0 @@ -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/traced-extraction/src/go.sum b/go/ql/integration-tests/traced-extraction/src/go.sum index a8e1b59ae4b1..e69de29bb2d1 100644 --- a/go/ql/integration-tests/traced-extraction/src/go.sum +++ b/go/ql/integration-tests/traced-extraction/src/go.sum @@ -1,45 +0,0 @@ -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.mod b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.mod index 7a2ca787004f..f33ad2ef3e86 100644 --- a/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.mod +++ b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.mod @@ -1,7 +1,5 @@ go 1.14 -require ( - github.com/microsoft/go-mssqldb v0.12.0 -) +require github.com/microsoft/go-mssqldb v0.12.0 module subdir2 diff --git a/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.sum b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.sum index 432407e3db02..506dc22b5e60 100644 --- a/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.sum +++ b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.sum @@ -1,30 +1 @@ -github.com/Azure/go-autorest v13.3.2+incompatible h1:VxzPyuhtnlBOzc4IWCZHqpyH2d+QMLQEuy3wREyY4oc= -github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.9.4 h1:1cM+NmKw91+8h5vfjgzK4ZGLuN72k87XVZBWyGwNjUM= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.1 h1:pZdL8o72rK+avFWl+p9nE8RWi1JInZrWJYlnpfXJwHk= -github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/microsoft/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73 h1:OGNva6WhsKst5OZf7eZOklDztV3hwtTHovdrLHV+MsA= -github.com/microsoft/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +github.com/microsoft/go-mssqldb v0.12.0 h1:nuQ0ygjq+dPZx78vkGH98aXZsk8tIdWHJaFV7ydhnqs= diff --git a/go/ql/test/extractor-tests/go-mod-comments/go.mod b/go/ql/test/extractor-tests/go-mod-comments/go.mod index fadc7257586e..f9e9c3f644f0 100644 --- a/go/ql/test/extractor-tests/go-mod-comments/go.mod +++ b/go/ql/test/extractor-tests/go-mod-comments/go.mod @@ -1,6 +1,7 @@ // atthetop module smowton/test // endofline + // onitsown go 1.14 -// afterwards +// afterwards diff --git a/go/ql/test/go.mod b/go/ql/test/go.mod index 2420613ecee8..f90aed12a7bf 100644 --- a/go/ql/test/go.mod +++ b/go/ql/test/go.mod @@ -1,4 +1,3 @@ module github.com/github/codeql-go/ql/test go 1.21 - diff --git a/go/ql/test/library-tests/semmle/go/dependencies/codeql-go/go.mod b/go/ql/test/library-tests/semmle/go/dependencies/codeql-go/go.mod index 06ecc65d84ae..eac8c4d8e452 100644 --- a/go/ql/test/library-tests/semmle/go/dependencies/codeql-go/go.mod +++ b/go/ql/test/library-tests/semmle/go/dependencies/codeql-go/go.mod @@ -1,8 +1,3 @@ module github.com/github/codeql-go go 1.13 - -require ( - golang.org/x/mod v0.2.0 - golang.org/x/tools v0.0.0-20200302225559-9b52d559c609 -) diff --git a/go/ql/test/library-tests/semmle/go/dependencies/sweb/go.mod b/go/ql/test/library-tests/semmle/go/dependencies/sweb/go.mod index 096134411f9b..876fde8baa2b 100644 --- a/go/ql/test/library-tests/semmle/go/dependencies/sweb/go.mod +++ b/go/ql/test/library-tests/semmle/go/dependencies/sweb/go.mod @@ -35,29 +35,3 @@ replace google.golang.org/appengine => github.com/golang/appengine v1.6.1 replace golang.org/x/mobile => github.com/golang/mobile v0.0.0-20190607214518-6fa95d984e88 replace golang.org/x/image => github.com/golang/image v0.0.0-20190622003408-7e034cad6442 - -require ( - github.com/Joker/jade v1.0.0 // indirect - github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398 // indirect - github.com/aymerick/raymond v2.0.2+incompatible // indirect - github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 // indirect - github.com/fatih/structs v1.1.0 // indirect - github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4 // indirect - github.com/iris-contrib/blackfriday v2.0.0+incompatible // indirect - github.com/iris-contrib/formBinder v0.0.0-20190104093907-fbd5963f41e1 // indirect - github.com/iris-contrib/go.uuid v2.0.0+incompatible // indirect - github.com/json-iterator/go v1.1.6 // indirect - github.com/kataras/golog v0.0.0-20190624001437-99c81de45f40 // indirect - github.com/kataras/iris v11.1.1+incompatible - github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d // indirect - github.com/klauspost/compress v1.7.2 // indirect - github.com/klauspost/cpuid v1.2.1 // indirect - github.com/microcosm-cc/bluemonday v1.0.2 // indirect - github.com/mitchellh/go-homedir v1.1.0 - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.1 // indirect - github.com/ryanuber/columnize v2.1.0+incompatible // indirect - github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect - github.com/spf13/cobra v0.0.5 - github.com/spf13/viper v1.4.0 -) From e38791976ee795429cc32611d5f8ff0bcd8252b9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Jul 2026 08:30:59 +0000 Subject: [PATCH 4/4] Remove added tests and revert test changes --- go/extractor/subst/BUILD.bazel | 8 +- go/extractor/subst/subst_test.go | 86 ------------------- .../package-not-found-with-go-mod/work/go.mod | 4 + .../package-not-found-with-go-mod/work/go.sum | 1 + .../go-mod-without-version/src/go.mod | 1 - .../test-extraction/src/go.sum | 45 ++++++++++ .../traced-extraction/src/go.sum | 45 ++++++++++ .../src/subdir2/go.mod | 4 +- .../src/subdir2/go.sum | 31 ++++++- .../extractor-tests/go-mod-comments/go.mod | 3 +- go/ql/test/go.mod | 1 + .../semmle/go/dependencies/codeql-go/go.mod | 5 ++ .../semmle/go/dependencies/sweb/go.mod | 26 ++++++ 13 files changed, 162 insertions(+), 98 deletions(-) delete mode 100644 go/extractor/subst/subst_test.go diff --git a/go/extractor/subst/BUILD.bazel b/go/extractor/subst/BUILD.bazel index a1975f3312af..3f6c86c80412 100644 --- a/go/extractor/subst/BUILD.bazel +++ b/go/extractor/subst/BUILD.bazel @@ -1,4 +1,4 @@ -load("@rules_go//go:def.bzl", "go_library", "go_test") +load("@rules_go//go:def.bzl", "go_library") go_library( name = "subst", @@ -10,9 +10,3 @@ go_library( importpath = "github.com/github/codeql-go/extractor/subst", visibility = ["//go:__subpackages__"], ) - -go_test( - name = "subst_test", - srcs = ["subst_test.go"], - embed = [":subst"], -) diff --git a/go/extractor/subst/subst_test.go b/go/extractor/subst/subst_test.go deleted file mode 100644 index 28a23849a8a2..000000000000 --- a/go/extractor/subst/subst_test.go +++ /dev/null @@ -1,86 +0,0 @@ -package subst - -import "testing" - -func TestResolvePath(t *testing.T) { - t.Parallel() - - tests := []struct { - name string - path string - resolveRoot string - resolved string - expected string - }{ - { - name: "resolved backslash path", - path: `X:\dir\file.go`, - resolveRoot: `X:\`, - resolved: `C:\target`, - expected: `C:\target\dir\file.go`, - }, - { - name: "resolved slash path", - path: `X:/dir/file.go`, - resolveRoot: `X:/`, - resolved: `C:\target`, - expected: `C:\target/dir/file.go`, - }, - { - name: "lowercase drive letter", - path: `x:\dir\file.go`, - resolveRoot: `x:\`, - resolved: `C:\target`, - expected: `C:\target\dir\file.go`, - }, - { - name: "unresolved drive", - path: `X:\dir\file.go`, - resolveRoot: `X:\`, - expected: `X:\dir\file.go`, - }, - { - name: "relative path", - path: `dir\file.go`, - expected: `dir\file.go`, - }, - { - name: "non drive prefix", - path: `\\server\share\file.go`, - expected: `\\server\share\file.go`, - }, - { - name: "missing separator after colon", - path: `X:file.go`, - expected: `X:file.go`, - }, - } - - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - t.Parallel() - - resolveCalls := 0 - actual := resolvePath(test.path, func(driveRoot string) string { - resolveCalls++ - if driveRoot != test.resolveRoot { - t.Fatalf("resolvePath passed drive root %q, want %q", driveRoot, test.resolveRoot) - } - return test.resolved - }) - - if actual != test.expected { - t.Fatalf("resolvePath(%q) = %q, want %q", test.path, actual, test.expected) - } - - wantCalls := 0 - if test.resolveRoot != "" { - wantCalls = 1 - } - if resolveCalls != wantCalls { - t.Fatalf("resolvePath(%q) made %d resolve calls, want %d", test.path, resolveCalls, wantCalls) - } - }) - } -} diff --git a/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.mod b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.mod index eb0b661feb98..52f47d8d3e25 100644 --- a/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.mod +++ b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.mod @@ -1,3 +1,7 @@ go 1.19 +require ( + github.com/linode/linode-docs-theme v0.0.0-20220622135843-166f108e1933 +) + module test diff --git a/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.sum b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.sum index e69de29bb2d1..c4c3e8d972df 100644 --- a/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.sum +++ b/go/ql/integration-tests/diagnostics/package-not-found-with-go-mod/work/go.sum @@ -0,0 +1 @@ +github.com/linode/linode-docs-theme v0.0.0-20220622135843-166f108e1933 h1:QchGQS6xESuyjdlNJEjvq2ftGX0sCTAhPhD5hAOJVMI= diff --git a/go/ql/integration-tests/go-mod-without-version/src/go.mod b/go/ql/integration-tests/go-mod-without-version/src/go.mod index ded1135300c5..95a82c8aaf51 100644 --- a/go/ql/integration-tests/go-mod-without-version/src/go.mod +++ b/go/ql/integration-tests/go-mod-without-version/src/go.mod @@ -4,4 +4,3 @@ require golang.org/x/sys v0.18.0 // indirect module test -go 1.24.13 diff --git a/go/ql/integration-tests/test-extraction/src/go.sum b/go/ql/integration-tests/test-extraction/src/go.sum index e69de29bb2d1..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/test-extraction/src/go.sum +++ b/go/ql/integration-tests/test-extraction/src/go.sum @@ -0,0 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/traced-extraction/src/go.sum b/go/ql/integration-tests/traced-extraction/src/go.sum index e69de29bb2d1..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/traced-extraction/src/go.sum +++ b/go/ql/integration-tests/traced-extraction/src/go.sum @@ -0,0 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.mod b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.mod index f33ad2ef3e86..7a2ca787004f 100644 --- a/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.mod +++ b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.mod @@ -1,5 +1,7 @@ go 1.14 -require github.com/microsoft/go-mssqldb v0.12.0 +require ( + github.com/microsoft/go-mssqldb v0.12.0 +) module subdir2 diff --git a/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.sum b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.sum index 506dc22b5e60..432407e3db02 100644 --- a/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.sum +++ b/go/ql/integration-tests/two-go-mods-one-failure/src/subdir2/go.sum @@ -1 +1,30 @@ -github.com/microsoft/go-mssqldb v0.12.0 h1:nuQ0ygjq+dPZx78vkGH98aXZsk8tIdWHJaFV7ydhnqs= +github.com/Azure/go-autorest v13.3.2+incompatible h1:VxzPyuhtnlBOzc4IWCZHqpyH2d+QMLQEuy3wREyY4oc= +github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.4 h1:1cM+NmKw91+8h5vfjgzK4ZGLuN72k87XVZBWyGwNjUM= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.1 h1:pZdL8o72rK+avFWl+p9nE8RWi1JInZrWJYlnpfXJwHk= +github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/microsoft/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73 h1:OGNva6WhsKst5OZf7eZOklDztV3hwtTHovdrLHV+MsA= +github.com/microsoft/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/go/ql/test/extractor-tests/go-mod-comments/go.mod b/go/ql/test/extractor-tests/go-mod-comments/go.mod index f9e9c3f644f0..fadc7257586e 100644 --- a/go/ql/test/extractor-tests/go-mod-comments/go.mod +++ b/go/ql/test/extractor-tests/go-mod-comments/go.mod @@ -1,7 +1,6 @@ // atthetop module smowton/test // endofline - // onitsown go 1.14 - // afterwards + diff --git a/go/ql/test/go.mod b/go/ql/test/go.mod index f90aed12a7bf..2420613ecee8 100644 --- a/go/ql/test/go.mod +++ b/go/ql/test/go.mod @@ -1,3 +1,4 @@ module github.com/github/codeql-go/ql/test go 1.21 + diff --git a/go/ql/test/library-tests/semmle/go/dependencies/codeql-go/go.mod b/go/ql/test/library-tests/semmle/go/dependencies/codeql-go/go.mod index eac8c4d8e452..06ecc65d84ae 100644 --- a/go/ql/test/library-tests/semmle/go/dependencies/codeql-go/go.mod +++ b/go/ql/test/library-tests/semmle/go/dependencies/codeql-go/go.mod @@ -1,3 +1,8 @@ module github.com/github/codeql-go go 1.13 + +require ( + golang.org/x/mod v0.2.0 + golang.org/x/tools v0.0.0-20200302225559-9b52d559c609 +) diff --git a/go/ql/test/library-tests/semmle/go/dependencies/sweb/go.mod b/go/ql/test/library-tests/semmle/go/dependencies/sweb/go.mod index 876fde8baa2b..096134411f9b 100644 --- a/go/ql/test/library-tests/semmle/go/dependencies/sweb/go.mod +++ b/go/ql/test/library-tests/semmle/go/dependencies/sweb/go.mod @@ -35,3 +35,29 @@ replace google.golang.org/appengine => github.com/golang/appengine v1.6.1 replace golang.org/x/mobile => github.com/golang/mobile v0.0.0-20190607214518-6fa95d984e88 replace golang.org/x/image => github.com/golang/image v0.0.0-20190622003408-7e034cad6442 + +require ( + github.com/Joker/jade v1.0.0 // indirect + github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398 // indirect + github.com/aymerick/raymond v2.0.2+incompatible // indirect + github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 // indirect + github.com/fatih/structs v1.1.0 // indirect + github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4 // indirect + github.com/iris-contrib/blackfriday v2.0.0+incompatible // indirect + github.com/iris-contrib/formBinder v0.0.0-20190104093907-fbd5963f41e1 // indirect + github.com/iris-contrib/go.uuid v2.0.0+incompatible // indirect + github.com/json-iterator/go v1.1.6 // indirect + github.com/kataras/golog v0.0.0-20190624001437-99c81de45f40 // indirect + github.com/kataras/iris v11.1.1+incompatible + github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d // indirect + github.com/klauspost/compress v1.7.2 // indirect + github.com/klauspost/cpuid v1.2.1 // indirect + github.com/microcosm-cc/bluemonday v1.0.2 // indirect + github.com/mitchellh/go-homedir v1.1.0 + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.1 // indirect + github.com/ryanuber/columnize v2.1.0+incompatible // indirect + github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect + github.com/spf13/cobra v0.0.5 + github.com/spf13/viper v1.4.0 +)