Skip to content

Commit

Permalink
feat(RepositoryConfiguration): Add support for snippet choice
Browse files Browse the repository at this point in the history
Signed-off-by: Nicolas Nobelis <[email protected]>
  • Loading branch information
nnobelis committed Feb 15, 2024
1 parent 78ea000 commit 29f321c
Show file tree
Hide file tree
Showing 6 changed files with 413 additions and 1 deletion.
85 changes: 85 additions & 0 deletions integrations/schemas/repository-configuration-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,84 @@
}
}
}
},
"package_snippet_choices": {
"type": "array",
"description": "A configuration to select a snippet from a package with multiple snippet findings.",
"items": {
"type": "object",
"properties": {
"provenance": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
]
},
"choices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"given": {
"type": "object",
"properties": {
"sourceLocation": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"lineStart": {
"type": "integer"
},
"lineEnd": {
"type": "integer"
}
},
"required": [
"path",
"lineStart",
"lineEnd"
]
}
}
},
"choice": {
"type": "object",
"properties": {
"purl": {
"type": "string"
},
"reason": {
"$ref": "#/definitions/snippetChoiceReason"
},
"comment": {
"type": "string"
}
},
"required": [
"reason",
"reasoning"
]
}
},
"required": [
"given",
"choice"
]
}
}
},
"required": [
"provenance",
"choices"
]
}
}
},
"definitions": {
Expand Down Expand Up @@ -210,6 +288,13 @@
"NOT_DETECTED",
"REFERENCE"
]
},
"snippetChoiceReason": {
"enum": [
"NO_RELEVANT_FINDING",
"ORIGINAL_FINDING",
"OTHER"
]
}
}
}
39 changes: 39 additions & 0 deletions model/src/main/kotlin/config/PackageSnippetChoice.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright (C) 2023 The ORT Project Authors (see <https://github.com/oss-review-toolkit/ort/blob/main/NOTICE>)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
* License-Filename: LICENSE
*/

package org.ossreviewtoolkit.model.config

import org.ossreviewtoolkit.model.RepositoryProvenance

data class PackageSnippetChoice(
/**
* The provenance this snippet choice applies to.
*/
val provenance: Provenance,

/**
* The snippet choices for this package.
*/
val snippetChoices: List<SnippetChoice>
)

/**
* The URL of the [RepositoryProvenance] the snippet choice applies to.
*/
data class Provenance(val url: String)
4 changes: 3 additions & 1 deletion model/src/main/kotlin/config/RepositoryConfiguration.kt
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,7 @@ data class RepositoryConfiguration(
* Defines license choices within this repository.
*/
@JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = LicenseChoicesFilter::class)
val licenseChoices: LicenseChoices = LicenseChoices()
val licenseChoices: LicenseChoices = LicenseChoices(),

val packageSnippetChoices: List<PackageSnippetChoice> = emptyList()
)
62 changes: 62 additions & 0 deletions model/src/main/kotlin/config/SnippetChoice.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/*
* Copyright (C) 2023 The ORT Project Authors (see <https://github.com/oss-review-toolkit/ort/blob/main/NOTICE>)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
* License-Filename: LICENSE
*/

package org.ossreviewtoolkit.model.config

import org.ossreviewtoolkit.model.TextLocation

/**
* A snippet choice for a given source file.
*/
data class SnippetChoice(
/**
* The source file criteria for which the snippet choice is made.
*/
val given: Given,

/**
* The snippet criteria to make the snippet choice.
*/
val choice: Choice
)

data class Given(
/**
* The source file for which the snippet choice is made.
*/
val sourceLocation: TextLocation
)

data class Choice(
/**
* The purl of the snippet chosen by this snippet choice. It [reason] is [SnippetChoiceReason.NO_RELEVANT_FINDING],
* it is null.
*/
val purl: String? = null,

/**
* The reason why this snippet choice was made.
*/
val reason: SnippetChoiceReason,

/**
* An optional comment describing the snippet choice.
*/
val comment: String? = null
)
37 changes: 37 additions & 0 deletions model/src/main/kotlin/config/SnippetChoiceReason.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Copyright (C) 2024 The ORT Project Authors (see <https://github.com/oss-review-toolkit/ort/blob/main/NOTICE>)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
* License-Filename: LICENSE
*/

package org.ossreviewtoolkit.model.config

enum class SnippetChoiceReason {
/**
* No relevant finding has been found for the corresponding source file. All snippets will be ignored.
*/
NO_RELEVANT_FINDING,

/**
* One snippet finding is relevant for the corresponding source file. All other snippets will be ignored.
*/
ORIGINAL_FINDING,

/**
* Other reason.
*/
OTHER
}
Loading

0 comments on commit 29f321c

Please sign in to comment.