Skip to content

Commit 5dc722f

Browse files
authored
CM-17794 SCA CLI - Support Maven (#98)
1 parent 0fc4e5e commit 5dc722f

2 files changed

Lines changed: 11 additions & 6 deletions

File tree

cli/helpers/maven/restore_maven_dependencies.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from os import path
12
from typing import List, Optional
23

34
import click
@@ -18,7 +19,7 @@ def __init__(self, context: click.Context, is_git_diff: bool,
1819
super().__init__(context, is_git_diff, command_timeout)
1920

2021
def is_project(self, document: Document) -> bool:
21-
return document.path.endswith(BUILD_MAVEN_FILE_NAME)
22+
return path.basename(document.path).split('/')[-1] == BUILD_MAVEN_FILE_NAME
2223

2324
def get_command(self, manifest_file_path: str) -> List[str]:
2425
return ['mvn', 'org.cyclonedx:cyclonedx-maven-plugin:2.7.4:makeAggregateBom', '-f', manifest_file_path]
@@ -34,7 +35,7 @@ def try_restore_dependencies(self, document: Document) -> Optional[Document]:
3435
restore_dependencies_document)
3536
else:
3637
restore_dependencies_document.content = get_file_content(
37-
join_paths(get_file_dir(manifest_file_path), restore_dependencies_document.path))
38+
join_paths(get_file_dir(manifest_file_path), self.get_lock_file_name()))
3839

3940
return restore_dependencies_document
4041

cli/helpers/sca_code_scanner.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import os
2-
from typing import List, Optional
2+
from typing import List, Optional, Dict
33

44
import click
55
from git import Repo, GitCommandError
@@ -88,19 +88,23 @@ def try_restore_dependencies(context: click.Context, documents_to_add: List[Docu
8888
project_path = context.params.get('path')
8989
manifest_file_path = get_manifest_file_path(document, is_monitor_action, project_path)
9090
logger.debug(f"Succeeded to generate dependencies tree on path: {manifest_file_path}")
91-
documents_to_add.append(restore_dependencies_document)
91+
92+
if restore_dependencies_document.path in documents_to_add:
93+
logger.debug(f"Duplicate document on restore for path: {restore_dependencies_document.path}")
94+
else:
95+
documents_to_add[restore_dependencies_document.path] = restore_dependencies_document
9296

9397

9498
def add_dependencies_tree_document(context: click.Context, documents_to_scan: List[Document],
9599
is_git_diff: bool = False) -> None:
96-
documents_to_add: List[Document] = []
100+
documents_to_add: Dict[str, Document] = {}
97101
restore_dependencies_list = restore_handlers(context, is_git_diff)
98102

99103
for restore_dependencies in restore_dependencies_list:
100104
for document in documents_to_scan:
101105
try_restore_dependencies(context, documents_to_add, restore_dependencies, document)
102106

103-
documents_to_scan.extend(documents_to_add)
107+
documents_to_scan.extend(list(documents_to_add.values()))
104108

105109

106110
def restore_handlers(context, is_git_diff):

0 commit comments

Comments
 (0)