Skip to content

Commit b499a22

Browse files
authored
Merge pull request #512 from codacy/add-custom-registry
feat: [TCE-1039] Add parameter 'registryAddress' in order to support alternative registry addresses for duplication and complexity tools
2 parents 943ea0d + 56db9c0 commit b499a22

File tree

6 files changed

+24
-17
lines changed

6 files changed

+24
-17
lines changed

bin/codacy-analysis-cli.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ run() {
4343
--volume "$CODACY_CODE":"$CODACY_CODE" \
4444
${output_volume} \
4545
--volume /tmp:/tmp \
46-
codacy/codacy-analysis-cli:${CODACY_ANALYSIS_CLI_VERSION} -- \
46+
${REGISTRY_ADDRESS}codacy/codacy-analysis-cli:${CODACY_ANALYSIS_CLI_VERSION} -- \
4747
"$@"
4848
}
4949

@@ -119,7 +119,6 @@ prep_args_with_output_absolute_path() {
119119
ARGUMENTS_WITH_ABSOLUTE_PATH_OUTPUT="$new_args"
120120
}
121121

122-
123122
test_docker_socket
124123

125124
analysis_file "$@"

cli/src/main/scala/com/codacy/analysis/cli/analysis/ToolSelector.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@ class ToolSelector(toolRepository: ToolRepository) {
1919
registryAddress: String): Either[CLIError, Set[ITool]] = {
2020

2121
def duplicationToolsEither: Either[CLIError.CouldNotGetTools, Set[DuplicationTool]] =
22-
duplicationToolCollector.fromLanguages(languages).left.map(e => CLIError.CouldNotGetTools(e.message))
22+
duplicationToolCollector
23+
.fromLanguages(languages, registryAddress)
24+
.left
25+
.map(e => CLIError.CouldNotGetTools(e.message))
2326

2427
def metricsToolsEither: Either[CLIError.CouldNotGetTools, Set[MetricsTool]] =
25-
metricsToolCollector.fromLanguages(languages).left.map(e => CLIError.CouldNotGetTools(e.message))
28+
metricsToolCollector.fromLanguages(languages, registryAddress).left.map(e => CLIError.CouldNotGetTools(e.message))
2629

2730
toolInputOpt match {
2831
case None =>

core/src/main/scala/com/codacy/analysis/core/tools/DuplicationTool.scala

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import scala.util.Try
1616
import com.codacy.analysis.core.model.DuplicationToolSpec
1717
import com.codacy.analysis.core.model.AnalyserError
1818

19-
class DuplicationTool(duplicationToolSpec: DuplicationToolSpec, val languageToRun: Language) extends ITool {
19+
class DuplicationTool(duplicationToolSpec: DuplicationToolSpec, val languageToRun: Language, registryAddress: String)
20+
extends ITool {
2021

2122
override def name: String = "duplication"
2223
override def supportedLanguages: Set[Language] = duplicationToolSpec.languages
@@ -28,7 +29,9 @@ class DuplicationTool(duplicationToolSpec: DuplicationToolSpec, val languageToRu
2829
maxToolMemory: Option[String] = None): Try[Set[DuplicationClone]] = {
2930

3031
val duplicationTool =
31-
new traits.DuplicationTool(duplicationToolSpec.dockerImage, duplicationToolSpec.languages.toList)
32+
new traits.DuplicationTool(
33+
registryAddress + duplicationToolSpec.dockerImage,
34+
duplicationToolSpec.languages.toList)
3235

3336
val dockerRunner = new BinaryDockerRunner[api.duplication.DuplicationClone](
3437
duplicationTool,
@@ -77,12 +80,12 @@ class DuplicationToolCollector(toolRepository: ToolRepository) {
7780

7881
private val logger: org.log4s.Logger = getLogger
7982

80-
def fromLanguages(languages: Set[Language]): Either[AnalyserError, Set[DuplicationTool]] = {
83+
def fromLanguages(languages: Set[Language], registryAddress: String): Either[AnalyserError, Set[DuplicationTool]] = {
8184
toolRepository.listDuplicationTools().map { tools =>
8285
languages.flatMap { lang =>
8386
val collectedTools = tools.collect {
8487
case tool if tool.languages.contains(lang) =>
85-
new DuplicationTool(tool, lang)
88+
new DuplicationTool(tool, lang, registryAddress)
8689
}
8790
if (collectedTools.isEmpty) {
8891
logger.info(s"No duplication tools found for language ${lang.name}")

core/src/main/scala/com/codacy/analysis/core/tools/MetricsTool.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ import org.log4s.getLogger
1515
import scala.concurrent.duration.Duration
1616
import scala.util.Try
1717

18-
class MetricsTool(metricsToolSpec: MetricsToolSpec, val languageToRun: Language) extends ITool {
18+
class MetricsTool(metricsToolSpec: MetricsToolSpec, val languageToRun: Language, registryAddress: String)
19+
extends ITool {
1920
override def name: String = "metrics"
2021

2122
override def supportedLanguages: Set[Language] = metricsToolSpec.languages.to[Set]
@@ -27,7 +28,8 @@ class MetricsTool(metricsToolSpec: MetricsToolSpec, val languageToRun: Language)
2728
maxToolMemory: Option[String] = None): Try[List[FileMetrics]] = {
2829
val request = MetricsRequest(directory.pathAsString)
2930

30-
val metricsTool = new traits.MetricsTool(metricsToolSpec.dockerImage, metricsToolSpec.languages.toList)
31+
val metricsTool =
32+
new traits.MetricsTool(registryAddress + metricsToolSpec.dockerImage, metricsToolSpec.languages.toList)
3133

3234
val dockerRunner = new BinaryDockerRunner[api.metrics.FileMetrics](
3335
metricsTool,
@@ -75,12 +77,12 @@ class MetricsToolCollector(toolRepository: ToolRepository) {
7577

7678
private val logger: org.log4s.Logger = getLogger
7779

78-
def fromLanguages(languages: Set[Language]): Either[AnalyserError, Set[MetricsTool]] = {
80+
def fromLanguages(languages: Set[Language], registryAddress: String): Either[AnalyserError, Set[MetricsTool]] = {
7981
toolRepository.listMetricsTools().map { tools =>
8082
languages.flatMap { lang =>
8183
val collectedTools = tools.collect {
8284
case tool if tool.languages.contains(lang) =>
83-
new MetricsTool(tool, lang)
85+
new MetricsTool(tool, lang, registryAddress)
8486
}
8587

8688
if (collectedTools.isEmpty) {

core/src/test/scala/com.codacy.analysis.core/tools/DuplicationToolSpec.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class DuplicationToolSpec extends Specification with NoLanguageFeatures {
3535

3636
val result = for {
3737
fileTarget <- FileCollector.defaultCollector().list(directory)
38-
duplicationTool = new DuplicationTool(duplicationToolSpec, Languages.Javascript)
38+
duplicationTool = new DuplicationTool(duplicationToolSpec, Languages.Javascript, "")
3939
duplicationToolResult <- duplicationTool.run(directory, fileTarget.readableFiles)
4040
} yield duplicationToolResult
4141

@@ -60,7 +60,7 @@ class DuplicationToolSpec extends Specification with NoLanguageFeatures {
6060

6161
val result = for {
6262
fileTarget <- FileCollector.defaultCollector().list(directory)
63-
duplicationTool = new DuplicationTool(duplicationToolSpec, Languages.Javascript)
63+
duplicationTool = new DuplicationTool(duplicationToolSpec, Languages.Javascript, "")
6464
filteredFileTarget = fileTarget.readableFiles.filterNot(_.endsWith("test2.js"))
6565
duplicationToolResult <- duplicationTool.run(directory, filteredFileTarget)
6666
} yield duplicationToolResult
@@ -79,7 +79,7 @@ class DuplicationToolSpec extends Specification with NoLanguageFeatures {
7979
val languagesWithTools: Set[Language] = Set(Languages.Java, Languages.Python, Languages.Ruby)
8080
val duplicationToolCollector = new DuplicationToolCollector(ToolRepositoryMock)
8181
s"detect the duplication tools for the given languages: ${languagesWithTools.mkString(", ")}" in {
82-
val toolsEither = duplicationToolCollector.fromLanguages(languagesWithTools)
82+
val toolsEither = duplicationToolCollector.fromLanguages(languagesWithTools, "")
8383
toolsEither must beRight
8484
val tools = toolsEither.right.get
8585
tools must haveSize(3)
@@ -89,7 +89,7 @@ class DuplicationToolSpec extends Specification with NoLanguageFeatures {
8989
val languagesWithoutTools: Set[Language] = Set(Languages.R, Languages.Elixir, Languages.Elm)
9090

9191
s"return no duplication tools for the given languages: ${languagesWithoutTools}" in {
92-
val toolsEither = duplicationToolCollector.fromLanguages(languagesWithoutTools)
92+
val toolsEither = duplicationToolCollector.fromLanguages(languagesWithoutTools, "")
9393
toolsEither must beRight
9494
val tools = toolsEither.right.get
9595
tools should beEmpty

core/src/test/scala/com.codacy.analysis.core/tools/MetricsToolSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class MetricsToolSpec extends Specification with NoLanguageFeatures {
2626
withClonedRepo("[email protected]:qamine-test/duplication-delta.git", commitUuid) { (_, directory) =>
2727
val testProjectFileMetrics = List(jsTestMetrics)
2828

29-
val metricsTool = new MetricsTool(cloc, Languages.Javascript)
29+
val metricsTool = new MetricsTool(cloc, Languages.Javascript, "")
3030

3131
val result = metricsTool.run(directory, Set(Source.File("test.js")))
3232

0 commit comments

Comments
 (0)