Skip to content

Commit ec09f0f

Browse files
committed
feat(compare): Introduce an option to ignore tool versions
For now, this only affects the scanner version stored in scan results as part of scanner details. Once [1] is implemented, those analyzer project tool versions would need to be ignored as well. Resolves #10750. [1]: #10676 Signed-off-by: Sebastian Schuberth <[email protected]>
1 parent e8f83aa commit ec09f0f

File tree

4 files changed

+31
-2
lines changed

4 files changed

+31
-2
lines changed

integrations/completions/ort-completion.bash

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,11 @@ _ort_compare() {
435435
in_param=''
436436
continue
437437
;;
438+
--ignore-tool-versions|-v)
439+
__skip_opt_eq
440+
in_param=''
441+
continue
442+
;;
438443
--ignore-tmp-dir|-d)
439444
__skip_opt_eq
440445
in_param=''
@@ -457,7 +462,7 @@ _ort_compare() {
457462
done
458463
local word="${COMP_WORDS[$COMP_CWORD]}"
459464
if [[ "${word}" =~ ^[-] ]]; then
460-
COMPREPLY=($(compgen -W '--method -m --context-size -C --ignore-time -t --ignore-environment -e --ignore-tmp-dir -d -h --help' -- "${word}"))
465+
COMPREPLY=($(compgen -W '--method -m --context-size -C --ignore-time -t --ignore-environment -e --ignore-tool-versions -v --ignore-tmp-dir -d -h --help' -- "${word}"))
461466
return
462467
fi
463468
@@ -476,6 +481,8 @@ _ort_compare() {
476481
;;
477482
"--ignore-environment")
478483
;;
484+
"--ignore-tool-versions")
485+
;;
479486
"--ignore-tmp-dir")
480487
;;
481488
"--help")

integrations/completions/ort-completion.fish

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ complete -c ort -n "__fish_seen_subcommand_from compare" -l method -s m -r -fa "
5252
complete -c ort -n "__fish_seen_subcommand_from compare" -l context-size -s C -r -d 'The number of unmodified lines to display in the context of a modified line. Only applies to unified diff output.'
5353
complete -c ort -n "__fish_seen_subcommand_from compare" -l ignore-time -s t -d 'Ignore time differences.'
5454
complete -c ort -n "__fish_seen_subcommand_from compare" -l ignore-environment -s e -d 'Ignore environment differences.'
55+
complete -c ort -n "__fish_seen_subcommand_from compare" -l ignore-tool-versions -s v -d 'Ignore tool version differences.'
5556
complete -c ort -n "__fish_seen_subcommand_from compare" -l ignore-tmp-dir -s d -d 'Ignore temporary directory differences.'
5657
complete -c ort -n "__fish_seen_subcommand_from compare" -s h -l help -d 'Show this message and exit'
5758

integrations/completions/ort-completion.zsh

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,11 @@ _ort_compare() {
440440
in_param=''
441441
continue
442442
;;
443+
--ignore-tool-versions|-v)
444+
__skip_opt_eq
445+
in_param=''
446+
continue
447+
;;
443448
--ignore-tmp-dir|-d)
444449
__skip_opt_eq
445450
in_param=''
@@ -462,7 +467,7 @@ _ort_compare() {
462467
done
463468
local word="${COMP_WORDS[$COMP_CWORD]}"
464469
if [[ "${word}" =~ ^[-] ]]; then
465-
COMPREPLY=($(compgen -W '--method -m --context-size -C --ignore-time -t --ignore-environment -e --ignore-tmp-dir -d -h --help' -- "${word}"))
470+
COMPREPLY=($(compgen -W '--method -m --context-size -C --ignore-time -t --ignore-environment -e --ignore-tool-versions -v --ignore-tmp-dir -d -h --help' -- "${word}"))
466471
return
467472
fi
468473
@@ -481,6 +486,8 @@ _ort_compare() {
481486
;;
482487
"--ignore-environment")
483488
;;
489+
"--ignore-tool-versions")
490+
;;
484491
"--ignore-tmp-dir")
485492
;;
486493
"--help")

plugins/commands/compare/src/main/kotlin/CompareCommand.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import com.github.difflib.UnifiedDiffUtils
4242
import java.time.Instant
4343

4444
import org.ossreviewtoolkit.model.OrtResult
45+
import org.ossreviewtoolkit.model.ScannerDetails
4546
import org.ossreviewtoolkit.model.mapper
4647
import org.ossreviewtoolkit.plugins.api.OrtPlugin
4748
import org.ossreviewtoolkit.plugins.api.PluginDescriptor
@@ -93,6 +94,11 @@ class CompareCommand(descriptor: PluginDescriptor = CompareCommandFactory.descri
9394
help = "Ignore environment differences."
9495
).flag()
9596

97+
private val ignoreToolVersions by option(
98+
"--ignore-tool-versions", "-v",
99+
help = "Ignore tool version differences."
100+
).flag()
101+
96102
private val ignoreTmpDir by option(
97103
"--ignore-tmp-dir", "-d",
98104
help = "Ignore temporary directory differences."
@@ -115,6 +121,7 @@ class CompareCommand(descriptor: PluginDescriptor = CompareCommandFactory.descri
115121
// TODO: Find a way to also ignore temporary directories (when diffing semantically).
116122
if (ignoreTime) addDeserializer(Instant::class.java, EpochInstantDeserializer())
117123
if (ignoreEnvironment) addDeserializer(Environment::class.java, DefaultEnvironmentDeserializer())
124+
if (ignoreToolVersions) addDeserializer(ScannerDetails::class.java, EmptyScannerVersionDeserializer())
118125
}
119126
)
120127

@@ -197,6 +204,13 @@ private class DefaultEnvironmentDeserializer : StdDeserializer<Environment>(Envi
197204
}
198205
}
199206

207+
private class EmptyScannerVersionDeserializer : StdDeserializer<ScannerDetails>(ScannerDetails::class.java) {
208+
override fun deserialize(parser: JsonParser, context: DeserializationContext): ScannerDetails {
209+
val node = parser.codec.readTree<JsonNode>(parser)
210+
return ScannerDetails(node["name"].textValue(), "", node["configuration"].textValue())
211+
}
212+
}
213+
200214
private fun Map<Regex, String>.replaceIn(text: String) =
201215
entries.fold(text) { currentText, (from, to) ->
202216
currentText.replace(from, to)

0 commit comments

Comments
 (0)