Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

java.lang.IllegalArgumentException in analyzer if project doesn't have a repository #6827

Closed
JukMR opened this issue Apr 11, 2023 · 5 comments · Fixed by #6839
Closed

java.lang.IllegalArgumentException in analyzer if project doesn't have a repository #6827

JukMR opened this issue Apr 11, 2023 · 5 comments · Fixed by #6839
Labels
analyzer About the analyzer tool duplicate An issue that duplicates another issue

Comments

@JukMR
Copy link

JukMR commented Apr 11, 2023

Trying to run:

ort/cli/build/install/ort/bin/ort --info -P ort.analyzer.allowDynamicVersions=true analyze -i cpp_conan_mock_example -o output/

Generates the following error if the folder cpp_conan_mock_example isn't a git repository.

14:29:08.477 [main] INFO  org.ossreviewtoolkit.model.config.OrtConfiguration - Using ORT configuration arguments:
	ort.analyzer.allowDynamicVersions=true
14:29:08.949 [main] INFO  org.ossreviewtoolkit.utils.common.EnvironmentVariableFilter - EnvironmentVariableFilter initialized with denySubstrings = [key, pass, pwd, token, user] and allowNames = [CARGO_HTTP_USER_AGENT, COMPOSER_ALLOW_SUPERUSER, CONAN_LOGIN_ENCRYPTION_KEY, CONAN_LOGIN_USERNAME, CONAN_PASSWORD, CONAN_USERNAME, CONAN_USER_HOME, CONAN_USER_HOME_SHORT, DOTNET_CLI_CONTEXT_ANSI_PASS_THRU, GIT_ASKPASS, GIT_HTTP_USER_AGENT, GRADLE_USER_HOME, HACKAGE_USERNAME, HACKAGE_PASSWORD, HACKAGE_KEY, PWD, USER, USERPROFILE].
 ______________________________
/        \_______   \__    ___/ The OSS Review Toolkit, version 5422e6586f-dirty.
|    |   | |       _/ |    |
|    |   | |    |   \ |    |    Running 'analyze' as 'julianmr' under Java 17.0.6 on Linux
\________/ |____|___/ |____|    with 8 CPUs and a maximum of 3976 MiB of memory.

Environment variables:
ORT_CONFIG_DIR = /home/julianmr/.ort/config
ORT_DATA_DIR = /home/julianmr/.ort
SHELL = /usr/bin/zsh
TERM = xterm-kitty

Looking for ORT configuration in the following file:
	/home/julianmr/.ort/config/config.yml (does not exist)

Looking for analyzer-specific configuration in the following files and directories:
	/home/julianmr/my_own_mock/cpp_conan_mock_example/.ort.yml (does not exist)
	/home/julianmr/.ort/config/resolutions.yml (does not exist)
The following package managers are enabled:
	Bower, Bundler, Cargo, Carthage, CocoaPods, Composer, Conan, DotNet, GoDep, GoMod, Gradle, Maven, NPM, NuGet, PIP, Pipenv, PNPM, Poetry, Pub, SBT, SpdxDocumentFile, Stack, Unmanaged, Yarn, Yarn2
The following package curation providers are enabled:
	DefaultDir, DefaultFile
Analyzing project path:
	/home/julianmr/my_own_mock/cpp_conan_mock_example
Found 1 Conan definition file(s) at:
	conanfile.txt
Found 1 definition file(s) from 1 package manager(s) in total.
14:29:09.170 [main] INFO  org.ossreviewtoolkit.analyzer.Analyzer - Starting Conan analysis.
14:29:09.235 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan --version' in '/home/julianmr'...
14:29:09.729 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.analyzer.PackageManager - Resolving Conan dependencies for path 'conanfile.txt'...
14:29:09.771 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.DirectoryStash - Temporarily moving directory from '/home/julianmr/.conan/data' to '/home/julianmr/.conan/.stash3151417547002685299/data'.
14:29:09.776 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan remote list --raw' in '/home/julianmr'...
14:29:10.301 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.analyzer.managers.Conan - Found remote 'conancenter' pointing to URL https://center.conan.io.
14:29:10.333 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.ort.OrtAuthenticator - Authenticator was successfully installed.
14:29:10.351 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.ort.OrtProxySelector - Proxy selector was successfully installed.
14:29:10.359 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.analyzer.managers.Conan - Found remote 'gitlab' pointing to URL https://gitlab.com/api/v4/projects/11499653/packages/conan.
14:29:10.364 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan user -r gitlab -p ***** *****' in '/home/julianmr'...
14:29:11.577 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan info conanfile.txt --json /tmp/ort-Conan6472987312022269893/info.json -s compiler=gcc -s compiler.libcxx=libstdc++ -s compiler.version=11.1' in '/home/julianmr/my_own_mock/cpp_conan_mock_example'...
14:29:12.539 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan inspect jsoncpp/1.9.4 --json /tmp/ort-Conan3667320018903645505/inspect.json' in '/home/julianmr/my_own_mock/cpp_conan_mock_example'...
14:29:14.148 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.DirectoryStash - Moving back directory from '/home/julianmr/.conan/.stash3151417547002685299/data' to '/home/julianmr/.conan/data'.
14:29:14.157 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.analyzer.PackageManager - Resolving Conan dependencies for path 'conanfile.txt' took 4.418532408s.
14:29:14.158 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.analyzer.Analyzer - Finished Conan analysis.
14:29:14.181 [main] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan --version' in '/home/julianmr'...
14:29:14.676 [main] INFO  org.ossreviewtoolkit.model.utils.ConfigurationResolver - Getting 0 package curation(s) from provider 'DefaultDir' took 310.81us.
14:29:14.676 [main] INFO  org.ossreviewtoolkit.model.utils.ConfigurationResolver - Getting 0 package curation(s) from provider 'DefaultFile' took 5.153us.
Writing analyzer result to '/home/julianmr/output/analyzer-result.yml'.
14:29:15.812 [main] INFO  org.ossreviewtoolkit.cli.commands.AnalyzerCommand - Wrote ORT result to 'analyzer-result.yml' (0.00 MiB) in 1.126143378s.
The analysis took 5.061549204s.
Exception in thread "main" java.lang.IllegalArgumentException: The VcsInfo(type=Git, url=, revision=, path=) of project 'Conan::conanfile.txt:' cannot be found in Repository(vcs=VcsInfo(type=, url=, revision=, path=), vcsProcessed=VcsInfo(type=, url=, revision=, path=), nestedRepositories={}, config=RepositoryConfiguration(analyzer=null, excludes=Excludes(paths=[], scopes=[]), resolutions=Resolutions(issues=[], ruleViolations=[], vulnerabilities=[]), curations=Curations(packages=[], licenseFindings=[]), packageConfigurations=[], licenseChoices=LicenseChoices(repositoryLicenseChoices=[], packageLicenseChoices=[]))).
	at org.ossreviewtoolkit.model.OrtResult.getFilePathRelativeToAnalyzerRoot(OrtResult.kt:278)
	at org.ossreviewtoolkit.model.OrtResult.getDefinitionFilePathRelativeToAnalyzerRoot(OrtResult.kt:264)
	at org.ossreviewtoolkit.model.config.Excludes.findPathExcludes(Excludes.kt:61)
	at org.ossreviewtoolkit.model.OrtResult$projects$2.invoke(OrtResult.kt:115)
	at org.ossreviewtoolkit.model.OrtResult$projects$2.invoke(OrtResult.kt:111)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at org.ossreviewtoolkit.model.OrtResult.getProjects(OrtResult.kt:111)
	at org.ossreviewtoolkit.model.OrtResult.getProject(OrtResult.kt:379)
	at org.ossreviewtoolkit.model.OrtResult.isProject(OrtResult.kt:542)
	at org.ossreviewtoolkit.model.OrtResult.isExcluded(OrtResult.kt:302)
	at org.ossreviewtoolkit.model.OrtResult.getProjects(OrtResult.kt:410)
	at org.ossreviewtoolkit.model.OrtResult.getProjects$default(OrtResult.kt:408)
	at org.ossreviewtoolkit.cli.commands.AnalyzerCommand.run(AnalyzerCommand.kt:245)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:198)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:211)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:18)
	at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:400)
	at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:397)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:415)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:440)
	at org.ossreviewtoolkit.cli.OrtMainKt.main(OrtMain.kt:76)

But, if cpp_conan_mock_example is a git repository (particularly the one on https://github.com/JukMR/cpp_conan_mock_example) the following message is generated:

14:39:03.309 [main] INFO  org.ossreviewtoolkit.model.config.OrtConfiguration - Using ORT configuration arguments:
	ort.analyzer.allowDynamicVersions=true
14:39:03.772 [main] INFO  org.ossreviewtoolkit.utils.common.EnvironmentVariableFilter - EnvironmentVariableFilter initialized with denySubstrings = [key, pass, pwd, token, user] and allowNames = [CARGO_HTTP_USER_AGENT, COMPOSER_ALLOW_SUPERUSER, CONAN_LOGIN_ENCRYPTION_KEY, CONAN_LOGIN_USERNAME, CONAN_PASSWORD, CONAN_USERNAME, CONAN_USER_HOME, CONAN_USER_HOME_SHORT, DOTNET_CLI_CONTEXT_ANSI_PASS_THRU, GIT_ASKPASS, GIT_HTTP_USER_AGENT, GRADLE_USER_HOME, HACKAGE_USERNAME, HACKAGE_PASSWORD, HACKAGE_KEY, PWD, USER, USERPROFILE].
 ______________________________
/        \_______   \__    ___/ The OSS Review Toolkit, version 5422e6586f-dirty.
|    |   | |       _/ |    |
|    |   | |    |   \ |    |    Running 'analyze' as 'julianmr' under Java 17.0.6 on Linux
\________/ |____|___/ |____|    with 8 CPUs and a maximum of 3976 MiB of memory.

Environment variables:
ORT_CONFIG_DIR = /home/julianmr/.ort/config
ORT_DATA_DIR = /home/julianmr/.ort
SHELL = /usr/bin/zsh
TERM = xterm-kitty

Looking for ORT configuration in the following file:
	/home/julianmr/.ort/config/config.yml (does not exist)

Looking for analyzer-specific configuration in the following files and directories:
	/home/julianmr/my_own_mock/cpp_conan_mock_example/.ort.yml (does not exist)
	/home/julianmr/.ort/config/resolutions.yml (does not exist)
The following package managers are enabled:
	Bower, Bundler, Cargo, Carthage, CocoaPods, Composer, Conan, DotNet, GoDep, GoMod, Gradle, Maven, NPM, NuGet, PIP, Pipenv, PNPM, Poetry, Pub, SBT, SpdxDocumentFile, Stack, Unmanaged, Yarn, Yarn2
The following package curation providers are enabled:
	DefaultDir, DefaultFile
Analyzing project path:
	/home/julianmr/my_own_mock/cpp_conan_mock_example
14:39:03.930 [main] INFO  org.ossreviewtoolkit.analyzer.PackageManager - Not analyzing directory '/home/julianmr/my_own_mock/cpp_conan_mock_example/.git' as it is hard-coded to be ignored.
Found 1 Conan definition file(s) at:
	conanfile.txt
Found 1 definition file(s) from 1 package manager(s) in total.
14:39:04.007 [main] INFO  org.ossreviewtoolkit.analyzer.Analyzer - Starting Conan analysis.
14:39:04.065 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan --version' in '/home/julianmr'...
14:39:04.573 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.analyzer.PackageManager - Resolving Conan dependencies for path 'conanfile.txt'...
14:39:04.615 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.DirectoryStash - Temporarily moving directory from '/home/julianmr/.conan/data' to '/home/julianmr/.conan/.stash17465178458690299867/data'.
14:39:04.620 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan remote list --raw' in '/home/julianmr'...
14:39:05.136 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.analyzer.managers.Conan - Found remote 'conancenter' pointing to URL https://center.conan.io.
14:39:05.174 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.ort.OrtAuthenticator - Authenticator was successfully installed.
14:39:05.195 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.ort.OrtProxySelector - Proxy selector was successfully installed.
14:39:05.202 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.analyzer.managers.Conan - Found remote 'gitlab' pointing to URL https://gitlab.com/api/v4/projects/11499653/packages/conan.
14:39:05.206 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan user -r gitlab -p ***** *****' in '/home/julianmr'...
14:39:06.382 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan info conanfile.txt --json /tmp/ort-Conan2462310424998248073/info.json -s compiler=gcc -s compiler.libcxx=libstdc++ -s compiler.version=11.1' in '/home/julianmr/my_own_mock/cpp_conan_mock_example'...
14:39:07.379 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan inspect jsoncpp/1.9.4 --json /tmp/ort-Conan14369590148608442876/inspect.json' in '/home/julianmr/my_own_mock/cpp_conan_mock_example'...
14:39:08.875 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.utils.common.DirectoryStash - Moving back directory from '/home/julianmr/.conan/.stash17465178458690299867/data' to '/home/julianmr/.conan/data'.
14:39:08.880 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.analyzer.PackageManager - Resolving Conan dependencies for path 'conanfile.txt' took 4.300702157s.
14:39:08.881 [DefaultDispatcher-worker-1] INFO  org.ossreviewtoolkit.analyzer.Analyzer - Finished Conan analysis.
14:39:08.949 [main] INFO  org.ossreviewtoolkit.utils.common.ProcessCapture - Running 'conan --version' in '/home/julianmr'...
14:39:09.441 [main] INFO  org.ossreviewtoolkit.model.utils.ConfigurationResolver - Getting 0 package curation(s) from provider 'DefaultDir' took 372.601us.
14:39:09.441 [main] INFO  org.ossreviewtoolkit.model.utils.ConfigurationResolver - Getting 0 package curation(s) from provider 'DefaultFile' took 4.64us.
Writing analyzer result to '/home/julianmr/output/analyzer-result.yml'.
14:39:10.348 [main] INFO  org.ossreviewtoolkit.cli.commands.AnalyzerCommand - Wrote ORT result to 'analyzer-result.yml' (0.00 MiB) in 897.172616ms.
The analysis took 5.005656101s.
Found 1 project(s) and 1 package(s) in total (not counting excluded ones).
Applied 0 curation(s) from 2 provider(s).
Resolved issues: 0 errors, 0 warnings, 0 hints.
Unresolved issues: 0 errors, 0 warnings, 0 hints.

I don't know if this is an expected behavior. If this is the case maybe the exception thrown could be more detailed about this.

@JukMR JukMR changed the title java.lang.IllegalArgumentException in analyzer when project doesn't have a repository java.lang.IllegalArgumentException in analyzer if project doesn't have a repository Apr 11, 2023
@JukMR
Copy link
Author

JukMR commented Apr 11, 2023

CC: @dgutson

@sschuberth
Copy link
Member

sschuberth commented Apr 11, 2023

I don't know if this is an expected behavior.

It actually is expected behavior, as ORT currently does not support analyzing source code that is not under version control. I'm proposing to close this in favor of #2896.

@sschuberth sschuberth added duplicate An issue that duplicates another issue analyzer About the analyzer tool labels Apr 11, 2023
@JukMR
Copy link
Author

JukMR commented Apr 11, 2023

Excellent then! Thanks for the answer and sorry for the noise. Closing the issue.

@JukMR JukMR closed this as completed Apr 11, 2023
@dgutson
Copy link

dgutson commented Apr 11, 2023

I propose at least to emit a user friendly error rather than such trace, containing this explanation to guide the user.
The error provides zero clues about this expected behavior, and led the user to use a lot of time investigating and debugging, whereas a message would have saved it.
I propose to re-open the issue and resolve it adding the error message.
@JukMR would you want to address it?

@sschuberth
Copy link
Member

sschuberth commented Apr 12, 2023

Actually, on a second look the problem in this specific Conan-case is something else:

The VcsInfo(type=Git, url=, revision=, path=) of project 'Conan::conanfile.txt:'

See how it says the VCS type would be "Git"? But how can it say that if the project is not under version control?

Turns out our Conan implementation hard-coded the VCS type to Git, which caused the side effect of the "VCS info" not being found as part of (empty) repository info. I'll propose a fix.

@sschuberth sschuberth reopened this Apr 12, 2023
sschuberth added a commit that referenced this issue Apr 12, 2023
sschuberth added a commit that referenced this issue Apr 12, 2023
sschuberth added a commit that referenced this issue Apr 12, 2023
sschuberth added a commit that referenced this issue Apr 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
analyzer About the analyzer tool duplicate An issue that duplicates another issue
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants