diff --git a/bin/codacy-analysis-cli.sh b/bin/codacy-analysis-cli.sh index f8686f9a..fcf015e5 100755 --- a/bin/codacy-analysis-cli.sh +++ b/bin/codacy-analysis-cli.sh @@ -43,7 +43,7 @@ run() { --volume "$CODACY_CODE":"$CODACY_CODE" \ ${output_volume} \ --volume /tmp:/tmp \ - codacy/codacy-analysis-cli:${CODACY_ANALYSIS_CLI_VERSION} -- \ + ${REGISTRY_ADDRESS}codacy/codacy-analysis-cli:${CODACY_ANALYSIS_CLI_VERSION} -- \ "$@" } @@ -119,7 +119,6 @@ prep_args_with_output_absolute_path() { ARGUMENTS_WITH_ABSOLUTE_PATH_OUTPUT="$new_args" } - test_docker_socket analysis_file "$@" diff --git a/cli/src/main/scala/com/codacy/analysis/cli/analysis/ToolSelector.scala b/cli/src/main/scala/com/codacy/analysis/cli/analysis/ToolSelector.scala index c238e44f..ce673914 100644 --- a/cli/src/main/scala/com/codacy/analysis/cli/analysis/ToolSelector.scala +++ b/cli/src/main/scala/com/codacy/analysis/cli/analysis/ToolSelector.scala @@ -19,10 +19,13 @@ class ToolSelector(toolRepository: ToolRepository) { registryAddress: String): Either[CLIError, Set[ITool]] = { def duplicationToolsEither: Either[CLIError.CouldNotGetTools, Set[DuplicationTool]] = - duplicationToolCollector.fromLanguages(languages).left.map(e => CLIError.CouldNotGetTools(e.message)) + duplicationToolCollector + .fromLanguages(languages, registryAddress) + .left + .map(e => CLIError.CouldNotGetTools(e.message)) def metricsToolsEither: Either[CLIError.CouldNotGetTools, Set[MetricsTool]] = - metricsToolCollector.fromLanguages(languages).left.map(e => CLIError.CouldNotGetTools(e.message)) + metricsToolCollector.fromLanguages(languages, registryAddress).left.map(e => CLIError.CouldNotGetTools(e.message)) toolInputOpt match { case None => diff --git a/core/src/main/scala/com/codacy/analysis/core/tools/DuplicationTool.scala b/core/src/main/scala/com/codacy/analysis/core/tools/DuplicationTool.scala index a32bbd29..f7ef85bf 100644 --- a/core/src/main/scala/com/codacy/analysis/core/tools/DuplicationTool.scala +++ b/core/src/main/scala/com/codacy/analysis/core/tools/DuplicationTool.scala @@ -16,7 +16,8 @@ import scala.util.Try import com.codacy.analysis.core.model.DuplicationToolSpec import com.codacy.analysis.core.model.AnalyserError -class DuplicationTool(duplicationToolSpec: DuplicationToolSpec, val languageToRun: Language) extends ITool { +class DuplicationTool(duplicationToolSpec: DuplicationToolSpec, val languageToRun: Language, registryAddress: String) + extends ITool { override def name: String = "duplication" override def supportedLanguages: Set[Language] = duplicationToolSpec.languages @@ -28,7 +29,9 @@ class DuplicationTool(duplicationToolSpec: DuplicationToolSpec, val languageToRu maxToolMemory: Option[String] = None): Try[Set[DuplicationClone]] = { val duplicationTool = - new traits.DuplicationTool(duplicationToolSpec.dockerImage, duplicationToolSpec.languages.toList) + new traits.DuplicationTool( + registryAddress + duplicationToolSpec.dockerImage, + duplicationToolSpec.languages.toList) val dockerRunner = new BinaryDockerRunner[api.duplication.DuplicationClone]( duplicationTool, @@ -77,12 +80,12 @@ class DuplicationToolCollector(toolRepository: ToolRepository) { private val logger: org.log4s.Logger = getLogger - def fromLanguages(languages: Set[Language]): Either[AnalyserError, Set[DuplicationTool]] = { + def fromLanguages(languages: Set[Language], registryAddress: String): Either[AnalyserError, Set[DuplicationTool]] = { toolRepository.listDuplicationTools().map { tools => languages.flatMap { lang => val collectedTools = tools.collect { case tool if tool.languages.contains(lang) => - new DuplicationTool(tool, lang) + new DuplicationTool(tool, lang, registryAddress) } if (collectedTools.isEmpty) { logger.info(s"No duplication tools found for language ${lang.name}") diff --git a/core/src/main/scala/com/codacy/analysis/core/tools/MetricsTool.scala b/core/src/main/scala/com/codacy/analysis/core/tools/MetricsTool.scala index e4b655ad..f4656d68 100644 --- a/core/src/main/scala/com/codacy/analysis/core/tools/MetricsTool.scala +++ b/core/src/main/scala/com/codacy/analysis/core/tools/MetricsTool.scala @@ -15,7 +15,8 @@ import org.log4s.getLogger import scala.concurrent.duration.Duration import scala.util.Try -class MetricsTool(metricsToolSpec: MetricsToolSpec, val languageToRun: Language) extends ITool { +class MetricsTool(metricsToolSpec: MetricsToolSpec, val languageToRun: Language, registryAddress: String) + extends ITool { override def name: String = "metrics" override def supportedLanguages: Set[Language] = metricsToolSpec.languages.to[Set] @@ -27,7 +28,8 @@ class MetricsTool(metricsToolSpec: MetricsToolSpec, val languageToRun: Language) maxToolMemory: Option[String] = None): Try[List[FileMetrics]] = { val request = MetricsRequest(directory.pathAsString) - val metricsTool = new traits.MetricsTool(metricsToolSpec.dockerImage, metricsToolSpec.languages.toList) + val metricsTool = + new traits.MetricsTool(registryAddress + metricsToolSpec.dockerImage, metricsToolSpec.languages.toList) val dockerRunner = new BinaryDockerRunner[api.metrics.FileMetrics]( metricsTool, @@ -75,12 +77,12 @@ class MetricsToolCollector(toolRepository: ToolRepository) { private val logger: org.log4s.Logger = getLogger - def fromLanguages(languages: Set[Language]): Either[AnalyserError, Set[MetricsTool]] = { + def fromLanguages(languages: Set[Language], registryAddress: String): Either[AnalyserError, Set[MetricsTool]] = { toolRepository.listMetricsTools().map { tools => languages.flatMap { lang => val collectedTools = tools.collect { case tool if tool.languages.contains(lang) => - new MetricsTool(tool, lang) + new MetricsTool(tool, lang, registryAddress) } if (collectedTools.isEmpty) { diff --git a/core/src/test/scala/com.codacy.analysis.core/tools/DuplicationToolSpec.scala b/core/src/test/scala/com.codacy.analysis.core/tools/DuplicationToolSpec.scala index 17841fc7..07788543 100644 --- a/core/src/test/scala/com.codacy.analysis.core/tools/DuplicationToolSpec.scala +++ b/core/src/test/scala/com.codacy.analysis.core/tools/DuplicationToolSpec.scala @@ -35,7 +35,7 @@ class DuplicationToolSpec extends Specification with NoLanguageFeatures { val result = for { fileTarget <- FileCollector.defaultCollector().list(directory) - duplicationTool = new DuplicationTool(duplicationToolSpec, Languages.Javascript) + duplicationTool = new DuplicationTool(duplicationToolSpec, Languages.Javascript, "") duplicationToolResult <- duplicationTool.run(directory, fileTarget.readableFiles) } yield duplicationToolResult @@ -60,7 +60,7 @@ class DuplicationToolSpec extends Specification with NoLanguageFeatures { val result = for { fileTarget <- FileCollector.defaultCollector().list(directory) - duplicationTool = new DuplicationTool(duplicationToolSpec, Languages.Javascript) + duplicationTool = new DuplicationTool(duplicationToolSpec, Languages.Javascript, "") filteredFileTarget = fileTarget.readableFiles.filterNot(_.endsWith("test2.js")) duplicationToolResult <- duplicationTool.run(directory, filteredFileTarget) } yield duplicationToolResult @@ -79,7 +79,7 @@ class DuplicationToolSpec extends Specification with NoLanguageFeatures { val languagesWithTools: Set[Language] = Set(Languages.Java, Languages.Python, Languages.Ruby) val duplicationToolCollector = new DuplicationToolCollector(ToolRepositoryMock) s"detect the duplication tools for the given languages: ${languagesWithTools.mkString(", ")}" in { - val toolsEither = duplicationToolCollector.fromLanguages(languagesWithTools) + val toolsEither = duplicationToolCollector.fromLanguages(languagesWithTools, "") toolsEither must beRight val tools = toolsEither.right.get tools must haveSize(3) @@ -89,7 +89,7 @@ class DuplicationToolSpec extends Specification with NoLanguageFeatures { val languagesWithoutTools: Set[Language] = Set(Languages.R, Languages.Elixir, Languages.Elm) s"return no duplication tools for the given languages: ${languagesWithoutTools}" in { - val toolsEither = duplicationToolCollector.fromLanguages(languagesWithoutTools) + val toolsEither = duplicationToolCollector.fromLanguages(languagesWithoutTools, "") toolsEither must beRight val tools = toolsEither.right.get tools should beEmpty diff --git a/core/src/test/scala/com.codacy.analysis.core/tools/MetricsToolSpec.scala b/core/src/test/scala/com.codacy.analysis.core/tools/MetricsToolSpec.scala index 42c7773a..d6dc9fa2 100644 --- a/core/src/test/scala/com.codacy.analysis.core/tools/MetricsToolSpec.scala +++ b/core/src/test/scala/com.codacy.analysis.core/tools/MetricsToolSpec.scala @@ -26,7 +26,7 @@ class MetricsToolSpec extends Specification with NoLanguageFeatures { withClonedRepo("git@github.com:qamine-test/duplication-delta.git", commitUuid) { (_, directory) => val testProjectFileMetrics = List(jsTestMetrics) - val metricsTool = new MetricsTool(cloc, Languages.Javascript) + val metricsTool = new MetricsTool(cloc, Languages.Javascript, "") val result = metricsTool.run(directory, Set(Source.File("test.js")))