Примеры ошибок, обнаруженных с помощью диагностики V8001
V8001. There are identical subexpressions to the left and to the right of the 'foo' operator.
Wox
V8001 There are identical sub-expressions 'manifest.ThemeId' to the left and to the right of the '==' operator. store.go 72
func (s *Store) GetStoreThemes(ctx context.Context) []common.Theme {
....
for _, manifest := range themeManifest {
_, found := lo.Find(storeThemeManifests,
func(manifest common.Theme) bool {
return manifest.ThemeId == manifest.ThemeId // <=
})
if found {
//skip duplicated theme
continue
}
storeThemeManifests = append(storeThemeManifests, manifest)
}
....
}
Wox
V8001 There are identical sub-expressions 'manifest.Id' to the left and to the right of the '==' operator. store.go 100
func (s *Store) GetStorePluginManifests(....) []StorePluginManifest {
....
for _, manifest := range pluginManifest {
existingManifest, found := lo.Find(storePluginManifests,
func(manifest StorePluginManifest) bool {
return manifest.Id == manifest.Id
})
if found {
....
}
storePluginManifests = append(storePluginManifests, manifest)
}
}
}
tidb
V8001 There are identical sub-expressions 'format.RestoreWithoutSchemaName' to the left and to the right of the '|' operator. modify_column.go 2073
func ProcessModifyColumnOptions(....) error {
var sb strings.Builder
restoreFlags := format.RestoreStringSingleQuotes |
format.RestoreKeyWordLowercase |
format.RestoreNameBackQuotes |
format.RestoreSpacesAroundBinaryOperation |
format.RestoreWithoutSchemaName | // <=
format.RestoreWithoutSchemaName // <=
restoreCtx := format.NewRestoreCtx(restoreFlags, &sb)
....
}
mediamtx
V8001 There are identical sub-expressions 'newConf.RTSPAddress != p.conf.RTSPAddress' to the left and to the right of the '!=' operator. core.go 790
func (p *Core) closeResources(....) {
....
closeRTSPServer := newConf == nil ||
newConf.RTSP != p.conf.RTSP ||
....
newConf.RTSPAddress != p.conf.RTSPAddress || // <=
....
newConf.RTSPUDPReadBufferSize != p.conf.RTSPUDPReadBufferSize ||
newConf.UDPReadBufferSize != p.conf.UDPReadBufferSize ||
newConf.ReadTimeout != p.conf.ReadTimeout ||
newConf.WriteTimeout != p.conf.WriteTimeout ||
newConf.WriteQueueSize != p.conf.WriteQueueSize ||
newConf.RTPAddress != p.conf.RTPAddress ||
newConf.RTCPAddress != p.conf.RTCPAddress ||
newConf.MulticastIPRange != p.conf.MulticastIPRange ||
newConf.MulticastRTPPort != p.conf.MulticastRTPPort ||
....
newConf.RTSPAddress != p.conf.RTSPAddress || // <=
....
newConf.RunOnConnect != p.conf.RunOnConnect ||
newConf.RunOnConnectRestart != p.conf.RunOnConnectRestart ||
newConf.RunOnDisconnect != p.conf.RunOnDisconnect ||
closeMetrics ||
closePathManager ||
closeLogger
}
nuclei
V8001 There are identical sub-expressions 'packages.NeedTypes' to the left and to the right of the '|' operator. parser.go 33
func NewEntityParser(dir string) (*EntityParser, error) {
cfg := &packages.Config{
Mode: packages.NeedName | packages.NeedFiles | packages.NeedImports |
packages.NeedTypes | packages.NeedSyntax | packages.NeedTypes |
packages.NeedModule | packages.NeedTypesInfo,
Tests: false,
Dir: dir,
ParseFile: func(....) (*ast.File, error) {
return parser.ParseFile(fset, filename, src, parser.ParseComments)
},
}
}