Enable the appendAssign lint check (#1865)

* Make copies of buffers

Avoid reusing one of the incoming arrays as a append extension, and
make a copy of the data. It's cleaner in the long run and possibly
easier for the GC to maintain.

* Avoid appendAssign problems in tag code

Reuse the existing slice when appending.

* Fix appendAssign in encoder_scene_preview_chunk

Appending and creating a new slice is somewhat unintuitive since the
underlying slice might be extended to satisfy the new capacity. This
sometimes leads to faulty logic.

Rewrite the code so it reuses `args` for all appending, and builds one
array clearly in the code. It follows the general style of the function
where `args` is being built in small incremental batches and avoids
the introduction of new names.

* Enable the appendAssign check

This makes us pass all gocritic warnings.

Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
SmallCoccinelle 2021-10-20 07:34:19 +02:00 committed by GitHub
parent e513b6ffa5
commit 8b7720e3bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 12 deletions

View File

@ -36,10 +36,6 @@ linters:
# Project-specific linter overrides
linters-settings:
gocritic:
disabled-checks:
- appendAssign
gofmt:
simplify: false

View File

@ -67,7 +67,8 @@ func generateFalseNamePatterns(name string, separator, ext string) []string {
}
func generateTestPaths(testName, ext string) (scenePatterns []string, falseScenePatterns []string) {
separators := append(testSeparators, testEndSeparators...)
separators := testSeparators
separators = append(separators, testEndSeparators...)
for _, separator := range separators {
scenePatterns = append(scenePatterns, generateNamePatterns(testName, separator, ext)...)
@ -115,7 +116,8 @@ func generateTestTable(testName, ext string) []pathTestTable {
var scenePatterns []string
var falseScenePatterns []string
separators := append(testSeparators, testEndSeparators...)
separators := testSeparators
separators = append(separators, testEndSeparators...)
for _, separator := range separators {
scenePatterns = append(scenePatterns, generateNamePatterns(testName, separator, ext)...)

View File

@ -85,11 +85,11 @@ func (e *Encoder) ScenePreviewVideoChunk(probeResult VideoFile, options ScenePre
"-strict", "-2",
}
args3 := append(args, args2...)
args3 = append(args3, argsAudio...)
finalArgs := append(args3, options.OutputPath)
args = append(args, args2...)
args = append(args, argsAudio...)
args = append(args, options.OutputPath)
_, err := e.run(probeResult.Path, finalArgs, nil)
_, err := e.run(probeResult.Path, args, nil)
return err
}

View File

@ -649,13 +649,13 @@ func (qb *tagQueryBuilder) Merge(source []int, destination int) error {
"performers_tags": "performer_id",
}
tagArgs := append(args, destination)
args = append(args, destination)
for table, idColumn := range tagTables {
_, err := qb.tx.Exec(`UPDATE `+table+`
SET tag_id = ?
WHERE tag_id IN `+inBinding+`
AND NOT EXISTS(SELECT 1 FROM `+table+` o WHERE o.`+idColumn+` = `+table+`.`+idColumn+` AND o.tag_id = ?)`,
tagArgs...,
args...,
)
if err != nil {
return err