cmd/vet: add static vet checker that runs jsontags (#17778)
This starts running the jsontags vet checker on the module. All existing findings are adding to an allowlist. Updates tailscale/corp#791 Signed-off-by: Joe Tsai <joetsai@digital-static.net>main
parent
446752687c
commit
5b40f0bc54
@ -0,0 +1,38 @@ |
||||
name: tailscale.com/cmd/vet |
||||
|
||||
env: |
||||
HOME: ${{ github.workspace }} |
||||
# GOMODCACHE is the same definition on all OSes. Within the workspace, we use |
||||
# toplevel directories "src" (for the checked out source code), and "gomodcache" |
||||
# and other caches as siblings to follow. |
||||
GOMODCACHE: ${{ github.workspace }}/gomodcache |
||||
|
||||
on: |
||||
push: |
||||
branches: |
||||
- main |
||||
- "release-branch/*" |
||||
paths: |
||||
- "**.go" |
||||
pull_request: |
||||
paths: |
||||
- "**.go" |
||||
|
||||
jobs: |
||||
vet: |
||||
runs-on: [ self-hosted, linux ] |
||||
timeout-minutes: 5 |
||||
|
||||
steps: |
||||
- name: Check out code |
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 |
||||
with: |
||||
path: src |
||||
|
||||
- name: Build 'go vet' tool |
||||
working-directory: src |
||||
run: ./tool/go build -o /tmp/vettool tailscale.com/cmd/vet |
||||
|
||||
- name: Run 'go vet' |
||||
working-directory: src |
||||
run: ./tool/go vet -vettool=/tmp/vettool tailscale.com/... |
||||
@ -0,0 +1,315 @@ |
||||
OmitEmptyShouldBeOmitZero tailscale.com/client/web.authResponse.ViewerIdentity |
||||
OmitEmptyShouldBeOmitZero tailscale.com/cmd/k8s-operator.OwnerRef.Resource |
||||
OmitEmptyShouldBeOmitZero tailscale.com/cmd/tailscale/cli.apiResponse.Error |
||||
OmitEmptyShouldBeOmitZero tailscale.com/health.UnhealthyState.PrimaryAction |
||||
OmitEmptyShouldBeOmitZero tailscale.com/internal/client/tailscale.VIPService.Name |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.AcceptDNS |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.AcceptRoutes |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.AllowLANWhileUsingExitNode |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.AppConnector |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.AuthKey |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.AutoUpdate |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.DisableSNAT |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.Enabled |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.ExitNode |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.Hostname |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.Locked |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.NetfilterMode |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.NoStatefulFiltering |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.OperatorUser |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.PostureChecking |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.RunSSHServer |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.RunWebClient |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.ServeConfigTemp |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.ServerURL |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.ConfigVAlpha.ShieldsUp |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.OutgoingFile.PeerID |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.Prefs.AutoExitNode |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.Prefs.NoStatefulFiltering |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn.Prefs.RelayServerPort |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn/auditlog.transaction.Action |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn/ipnstate.PeerStatus.AllowedIPs |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn/ipnstate.PeerStatus.Location |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn/ipnstate.PeerStatus.PrimaryRoutes |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn/ipnstate.PeerStatus.Tags |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn/ipnstate.Status.ExitNodeStatus |
||||
OmitEmptyShouldBeOmitZero tailscale.com/ipn/ipnstate.UpdateProgress.Status |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ConnectorSpec.AppConnector |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ConnectorSpec.Hostname |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ConnectorSpec.HostnamePrefix |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ConnectorSpec.Replicas |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ConnectorSpec.SubnetRouter |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Container.Debug |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Container.ImagePullPolicy |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Container.SecurityContext |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.KubeAPIServerConfig.Mode |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Nameserver.Image |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Nameserver.Pod |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Nameserver.Replicas |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Nameserver.Service |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Pod.Affinity |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Pod.DNSConfig |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Pod.DNSPolicy |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Pod.SecurityContext |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Pod.TailscaleContainer |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Pod.TailscaleInitContainer |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ProxyClassSpec.Metrics |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ProxyClassSpec.StaticEndpoints |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ProxyClassSpec.TailscaleConfig |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ProxyGroupSpec.HostnamePrefix |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ProxyGroupSpec.KubeAPIServer |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.ProxyGroupSpec.Replicas |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.RecorderContainer.ImagePullPolicy |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.RecorderContainer.SecurityContext |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.RecorderPod.Affinity |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.RecorderPod.SecurityContext |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.StatefulSet.Pod |
||||
OmitEmptyShouldBeOmitZero tailscale.com/k8s-operator/apis/v1alpha1.Storage.S3 |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/ingressservices.Config.IPv4Mapping |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/ingressservices.Config.IPv6Mapping |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.APIServerProxyConfig.Enabled |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.APIServerProxyConfig.IssueCerts |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.APIServerProxyConfig.Mode |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.APIServerProxyConfig.ServiceName |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.AcceptRoutes |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.APIServerProxy |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.App |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.AuthKey |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.HealthCheckEnabled |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.Hostname |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.LocalAddr |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.LocalPort |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.LogLevel |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.MetricsEnabled |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.ServerURL |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.ConfigV1Alpha1.State |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/k8s-proxy/conf.VersionedConfig.V1Alpha1 |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/kubeapi.ObjectMeta.DeletionGracePeriodSeconds |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/kubeapi.Status.Details |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/kubeclient.JSONPatch.Value |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/kubetypes.*.Mode |
||||
OmitEmptyShouldBeOmitZero tailscale.com/kube/kubetypes.KubernetesCapRule.Impersonate |
||||
OmitEmptyShouldBeOmitZero tailscale.com/sessionrecording.CastHeader.Kubernetes |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.AuditLogRequest.Action |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Debug.Exit |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.DERPMap.HomeParams |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.DisplayMessage.PrimaryAction |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Hostinfo.AppConnector |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Hostinfo.Container |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Hostinfo.Desktop |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Hostinfo.Location |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Hostinfo.NetInfo |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Hostinfo.StateEncrypted |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Hostinfo.TPM |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Hostinfo.Userspace |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Hostinfo.UserspaceRouter |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.ClientVersion |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.CollectServices |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.ControlDialPlan |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.Debug |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.DefaultAutoUpdate |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.DERPMap |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.DNSConfig |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.Node |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.PingRequest |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.SSHPolicy |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.MapResponse.TKAInfo |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.NetPortRange.Bits |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Node.Online |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Node.SelfNodeV4MasqAddrForThisPeer |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.Node.SelfNodeV6MasqAddrForThisPeer |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.PeerChange.Online |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.RegisterRequest.Auth |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.RegisterResponseAuth.Oauth2Token |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.SSHAction.OnRecordingFailure |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tailcfg.SSHPrincipal.Node |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tempfork/acme.*.ExternalAccountBinding |
||||
OmitEmptyShouldBeOmitZero tailscale.com/tsweb.AccessLogRecord.RequestID |
||||
OmitEmptyShouldBeOmitZero tailscale.com/types/opt.*.Unset |
||||
OmitEmptyShouldBeOmitZero tailscale.com/types/views.viewStruct.AddrsPtr |
||||
OmitEmptyShouldBeOmitZero tailscale.com/types/views.viewStruct.StringsPtr |
||||
OmitEmptyShouldBeOmitZero tailscale.com/wgengine/magicsock.EndpointChange.From |
||||
OmitEmptyShouldBeOmitZero tailscale.com/wgengine/magicsock.EndpointChange.To |
||||
OmitEmptyShouldBeOmitZeroButHasIsZero tailscale.com/types/persist.Persist.AttestationKey |
||||
OmitEmptyUnsupportedInV1 tailscale.com/client/tailscale.KeyCapabilities.Devices |
||||
OmitEmptyUnsupportedInV1 tailscale.com/client/tailscale/apitype.ExitNodeSuggestionResponse.Location |
||||
OmitEmptyUnsupportedInV1 tailscale.com/cmd/k8s-operator.ServiceMonitorSpec.NamespaceSelector |
||||
OmitEmptyUnsupportedInV1 tailscale.com/derp.ClientInfo.MeshKey |
||||
OmitEmptyUnsupportedInV1 tailscale.com/ipn.MaskedPrefs.AutoUpdateSet |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.Connector.ObjectMeta |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.Container.Resources |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.DNSConfig.ObjectMeta |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.ProxyClass.ObjectMeta |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.ProxyGroup.ObjectMeta |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.Recorder.ObjectMeta |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.RecorderContainer.Resources |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.RecorderPod.Container |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.RecorderPod.ServiceAccount |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.RecorderSpec.Storage |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.RecorderStatefulSet.Pod |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.S3.Credentials |
||||
OmitEmptyUnsupportedInV1 tailscale.com/k8s-operator/apis/v1alpha1.S3Credentials.Secret |
||||
OmitEmptyUnsupportedInV1 tailscale.com/kube/kubeapi.Event.FirstTimestamp |
||||
OmitEmptyUnsupportedInV1 tailscale.com/kube/kubeapi.Event.LastTimestamp |
||||
OmitEmptyUnsupportedInV1 tailscale.com/kube/kubeapi.Event.Source |
||||
OmitEmptyUnsupportedInV1 tailscale.com/kube/kubeapi.ObjectMeta.CreationTimestamp |
||||
OmitEmptyUnsupportedInV1 tailscale.com/tailcfg_test.*.Groups |
||||
OmitEmptyUnsupportedInV1 tailscale.com/tailcfg.Oauth2Token.Expiry |
||||
OmitEmptyUnsupportedInV1 tailscale.com/tailcfg.QueryFeatureRequest.NodeKey |
||||
OmitEmptyUnsupportedInV2 tailscale.com/client/tailscale.*.ExpirySeconds |
||||
OmitEmptyUnsupportedInV2 tailscale.com/client/tailscale.DerpRegion.Preferred |
||||
OmitEmptyUnsupportedInV2 tailscale.com/client/tailscale.DevicePostureIdentity.Disabled |
||||
OmitEmptyUnsupportedInV2 tailscale.com/client/tailscale/apitype.DNSResolver.UseWithExitNode |
||||
OmitEmptyUnsupportedInV2 tailscale.com/client/web.authResponse.NeedsSynoAuth |
||||
OmitEmptyUnsupportedInV2 tailscale.com/cmd/tsidp.tailscaleClaims.UserID |
||||
OmitEmptyUnsupportedInV2 tailscale.com/derp.ClientInfo.IsProber |
||||
OmitEmptyUnsupportedInV2 tailscale.com/derp.ClientInfo.Version |
||||
OmitEmptyUnsupportedInV2 tailscale.com/derp.ServerInfo.TokenBucketBytesBurst |
||||
OmitEmptyUnsupportedInV2 tailscale.com/derp.ServerInfo.TokenBucketBytesPerSecond |
||||
OmitEmptyUnsupportedInV2 tailscale.com/derp.ServerInfo.Version |
||||
OmitEmptyUnsupportedInV2 tailscale.com/health.UnhealthyState.ImpactsConnectivity |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.AutoUpdatePrefsMask.ApplySet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.AutoUpdatePrefsMask.CheckSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.AdvertiseRoutesSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.AdvertiseServicesSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.AdvertiseTagsSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.AppConnectorSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.AutoExitNodeSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.ControlURLSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.CorpDNSSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.DriveSharesSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.EggSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.ExitNodeAllowLANAccessSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.ExitNodeIDSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.ExitNodeIPSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.ForceDaemonSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.HostnameSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.InternalExitNodePriorSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.LoggedOutSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.NetfilterKindSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.NetfilterModeSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.NoSNATSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.NoStatefulFilteringSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.NotepadURLsSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.OperatorUserSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.PostureCheckingSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.ProfileNameSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.RelayServerPortSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.RouteAllSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.RunSSHSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.RunWebClientSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.ShieldsUpSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.MaskedPrefs.WantRunningSet |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.PartialFile.Done |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.Prefs.Egg |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.Prefs.ForceDaemon |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.ServiceConfig.Tun |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.TCPPortHandler.HTTP |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn.TCPPortHandler.HTTPS |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn/auditlog.transaction.Retries |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn/ipnstate.PeerStatus.AltSharerUserID |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn/ipnstate.PeerStatus.Expired |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn/ipnstate.PeerStatus.ShareeNode |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn/ipnstate.PingResult.IsLocalIP |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn/ipnstate.PingResult.PeerAPIPort |
||||
OmitEmptyUnsupportedInV2 tailscale.com/ipn/ipnstate.Status.HaveNodeKey |
||||
OmitEmptyUnsupportedInV2 tailscale.com/k8s-operator/apis/v1alpha1.PortRange.EndPort |
||||
OmitEmptyUnsupportedInV2 tailscale.com/k8s-operator/apis/v1alpha1.ProxyClassSpec.UseLetsEncryptStagingEnvironment |
||||
OmitEmptyUnsupportedInV2 tailscale.com/k8s-operator/apis/v1alpha1.RecorderSpec.EnableUI |
||||
OmitEmptyUnsupportedInV2 tailscale.com/k8s-operator/apis/v1alpha1.TailscaleConfig.AcceptRoutes |
||||
OmitEmptyUnsupportedInV2 tailscale.com/kube/kubeapi.Event.Count |
||||
OmitEmptyUnsupportedInV2 tailscale.com/kube/kubeapi.ObjectMeta.Generation |
||||
OmitEmptyUnsupportedInV2 tailscale.com/kube/kubeapi.Status.Code |
||||
OmitEmptyUnsupportedInV2 tailscale.com/kube/kubetypes.KubernetesCapRule.EnforceRecorder |
||||
OmitEmptyUnsupportedInV2 tailscale.com/log/sockstatlog.event.IsCellularInterface |
||||
OmitEmptyUnsupportedInV2 tailscale.com/sessionrecording.CastHeader.SrcNodeUserID |
||||
OmitEmptyUnsupportedInV2 tailscale.com/sessionrecording.Source.NodeUserID |
||||
OmitEmptyUnsupportedInV2 tailscale.com/sessionrecording.v2ResponseFrame.Ack |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg_test.*.ToggleOn |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.AuditLogRequest.Version |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.C2NPostureIdentityResponse.PostureDisabled |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.C2NSSHUsernamesRequest.Max |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.C2NTLSCertInfo.Expired |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.C2NTLSCertInfo.Missing |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.C2NTLSCertInfo.Valid |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.ClientVersion.Notify |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.ClientVersion.RunningLatest |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.ClientVersion.UrgentSecurityUpdate |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.ControlIPCandidate.DialStartDelaySec |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.ControlIPCandidate.DialTimeoutSec |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.ControlIPCandidate.Priority |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Debug.DisableLogTail |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Debug.SleepSeconds |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DERPMap.OmitDefaultRegions |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DERPNode.CanPort80 |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DERPNode.DERPPort |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DERPNode.InsecureForTests |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DERPNode.STUNOnly |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DERPNode.STUNPort |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DERPRegion.Avoid |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DERPRegion.Latitude |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DERPRegion.Longitude |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DERPRegion.NoMeasureNoHome |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DisplayMessage.ImpactsConnectivity |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.DNSConfig.Proxied |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Hostinfo.AllowsUpdate |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Hostinfo.IngressEnabled |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Hostinfo.NoLogsNoSupport |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Hostinfo.ShareeNode |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Hostinfo.ShieldsUp |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Hostinfo.WireIngress |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Location.Latitude |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Location.Longitude |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Location.Priority |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.MapRequest.MapSessionSeq |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.MapRequest.OmitPeers |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.MapRequest.ReadOnly |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.MapResponse.KeepAlive |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.MapResponse.Seq |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.NetInfo.HavePortMap |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Node.Cap |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Node.Expired |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Node.HomeDERP |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Node.IsJailed |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Node.IsWireGuardOnly |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Node.MachineAuthorized |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Node.Sharer |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.Node.UnsignedPeerAPIOnly |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.PeerChange.Cap |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.PeerChange.DERPRegion |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.PingRequest.Log |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.PingRequest.URLIsNoise |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.PingResponse.DERPRegionID |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.PingResponse.IsLocalIP |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.PingResponse.LatencySeconds |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.PingResponse.PeerAPIPort |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.QueryFeatureResponse.Complete |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.QueryFeatureResponse.ShouldWait |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.RegisterRequest.Ephemeral |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.RegisterRequest.SignatureType |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.SSHAction.Accept |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.SSHAction.AllowAgentForwarding |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.SSHAction.AllowLocalPortForwarding |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.SSHAction.AllowRemotePortForwarding |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.SSHAction.Reject |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.SSHAction.SessionDuration |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.SSHPrincipal.Any |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.TKAInfo.Disabled |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.TPMInfo.FirmwareVersion |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.TPMInfo.Model |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.TPMInfo.SpecRevision |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tailcfg.WebClientAuthResponse.Complete |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tempfork/acme.*.TermsAgreed |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tstime/rate.jsonValue.Updated |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tstime/rate.jsonValue.Value |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tsweb.AccessLogRecord.Bytes |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tsweb.AccessLogRecord.Code |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tsweb.AccessLogRecord.Seconds |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tsweb.AccessLogRecord.TLS |
||||
OmitEmptyUnsupportedInV2 tailscale.com/tsweb/varz.SomeStats.TotalY |
||||
OmitEmptyUnsupportedInV2 tailscale.com/types/appctype.AppConnectorConfig.AdvertiseRoutes |
||||
OmitEmptyUnsupportedInV2 tailscale.com/types/dnstype.Resolver.UseWithExitNode |
||||
OmitEmptyUnsupportedInV2 tailscale.com/types/opt.testStruct.Int |
||||
OmitEmptyUnsupportedInV2 tailscale.com/version.Meta.GitDirty |
||||
OmitEmptyUnsupportedInV2 tailscale.com/version.Meta.IsDev |
||||
OmitEmptyUnsupportedInV2 tailscale.com/version.Meta.UnstableBranch |
||||
@ -0,0 +1,24 @@ |
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Package vet is a tool to statically check Go source code.
|
||||
package main |
||||
|
||||
import ( |
||||
_ "embed" |
||||
|
||||
"golang.org/x/tools/go/analysis/unitchecker" |
||||
"tailscale.com/cmd/vet/jsontags" |
||||
) |
||||
|
||||
//go:embed jsontags_allowlist
|
||||
var jsontagsAllowlistSource string |
||||
|
||||
func init() { |
||||
jsontags.RegisterAllowlist(jsontags.ParseAllowlist(jsontagsAllowlistSource)) |
||||
jsontags.RegisterPureIsZeroMethods(jsontags.PureIsZeroMethodsInTailscaleModule) |
||||
} |
||||
|
||||
func main() { |
||||
unitchecker.Main(jsontags.Analyzer) |
||||
} |
||||
@ -1 +1 @@ |
||||
sha256-D0znIEcy9d822snZbdNCNLoN47cOP1F2SKmfwSFRvXw= |
||||
sha256-p8dVVZm2bLL4J/d4TtnUOp3bfMqUkBGE+53RUhamF+A= |
||||
|
||||
Loading…
Reference in new issue