Skip to content

Commit 80de26a

Browse files
committed
1.1.8 Several changes for docker-compose analysis
- Fixed: Issue with analyzing docker compose files - Improved: Correct YAML key matching based on qualified names
1 parent d721d2f commit 80de26a

5 files changed

Lines changed: 20 additions & 23 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
# Infrastructure as Code (IaC) Security Linter Changelog
44

5+
## [1.1.8] 08-06-2025
6+
7+
### Fixed
8+
- Issue with analyzing docker compose files
9+
10+
### Improved
11+
- Correct YAML key matching based on qualified names
12+
513
## [1.1.7] 02-06-2025
614

715
### Fixed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
pluginGroup = dev.protsenko.securityLinter
22
pluginName = Infrastructure as Code (IaC) Security Linter
33
pluginRepositoryUrl = https://github.com/NordCoderd/infrastructure-security
4-
pluginVersion = 1.1.7
4+
pluginVersion = 1.1.8
55

66
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
77
pluginSinceBuild = 231

src/main/kotlin/dev/protsenko/securityLinter/docker_compose/DockerComposeInspection.kt

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,21 @@ import dev.protsenko.securityLinter.docker_compose.DockerComposeConstants.USER_K
1717
import dev.protsenko.securityLinter.docker_compose.DockerComposeConstants.supportedAttributes
1818
import dev.protsenko.securityLinter.utils.PortUtils
1919
import dev.protsenko.securityLinter.utils.image.ImageAnalyzer
20-
import dev.protsenko.securityLinter.utils.image.ImageDefinition
2120
import dev.protsenko.securityLinter.utils.image.ImageDefinitionCreator
22-
import dev.protsenko.securityLinter.utils.isChildOfServiceDefinition
21+
import org.jetbrains.yaml.navigation.YAMLQualifiedNameProvider
2322
import org.jetbrains.yaml.psi.YAMLFile
2423
import org.jetbrains.yaml.psi.YAMLKeyValue
2524
import org.jetbrains.yaml.psi.YAMLSequenceItem
2625

2726
class DockerComposeInspection: LocalInspectionTool() {
2827

28+
val provider = YAMLQualifiedNameProvider()
29+
2930
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor {
3031
return object : PsiElementVisitor(){
3132
override fun visitFile(file: PsiFile) {
32-
if (file is YAMLFile
33-
|| !file.name.startsWith("docker", ignoreCase = true)){
34-
return
35-
}
33+
if (file !is YAMLFile) return
34+
if (!file.name.startsWith("docker", ignoreCase = true)) return
3635
super.visitFile(file)
3736
}
3837

@@ -41,16 +40,18 @@ class DockerComposeInspection: LocalInspectionTool() {
4140
*/
4241
override fun visitElement(element: PsiElement) {
4342
if (element is YAMLKeyValue){
43+
val fqn = provider.getQualifiedName(element) ?: return
44+
if (!fqn.startsWith("services")) return
45+
4446
val attributeName = element.key?.text ?: return
45-
val attributeValue = element.value?.text?.trim() ?: return
4647
if (attributeName !in supportedAttributes) return
47-
if (!element.isChildOfServiceDefinition()) return
48+
val attributeValue = element.value?.text?.trim() ?: return
4849

4950
when (attributeName){
5051
// Analyzing image definition
5152
IMAGE_KEY_LITERAL -> {
5253
val imageDefinition = ImageDefinitionCreator.fromString(attributeValue, emptyMap())
53-
ImageAnalyzer.analyzeAndHighlight(imageDefinition, holder, element, emptyMap<String, ImageDefinition>())
54+
ImageAnalyzer.analyzeAndHighlight(imageDefinition, holder, element, emptyMap())
5455
}
5556
USER_KEY_LITERAL -> {
5657
if (PROHIBITED_USERS.contains(attributeValue.trim())){

src/main/kotlin/dev/protsenko/securityLinter/utils/DockerComposePsiHelper.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/test/kotlin/dev/protsenko/securityLinter/docker_compose/DC001InvalidImageDefinitionTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ import dev.protsenko.securityLinter.core.DockerComposeHighlightingBaseTest
66
class DC001InvalidImageDefinitionTest(
77
override val ruleFolderName: String = "DC001",
88
override val targetInspection: LocalInspectionTool = DockerComposeInspection(),
9-
override val customFiles: Set<String> = emptySet<String>()
9+
override val customFiles: Set<String> = emptySet()
1010
): DockerComposeHighlightingBaseTest()

0 commit comments

Comments
 (0)