I am setting up static analysis with Lava Tools in a Java maven project. I need the static analysis to run in a virtual environment with python 3.8.x. I’ve set up my pom.xml with the below but my python 3.8 virtual environment winds up in my project root instead of in the java java.io.tmpdir folder. And the python version that gets installed in the java.io.tmpdir venv folder defaults to 3.12 which is the python default version in macOS non-virtual environment. How can I get the static analysis to run in the 3.8 virtual environment?
<properties>
<main.basedir>${project.parent.basedir}</main.basedir>
<lava-tool-version>1.0.3</lava-tool-version>
<static-analysis-config>static_analysis_config.ini</static-analysis-config>
<venv-dir>${project.build.directory}/venv</venv-dir>
</properties>
<profiles>
<profile>
<id>sca</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<venv-dir>${java.io.tmpdir}</venv-dir>
</properties>
</profile>
</profiles>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>create-venv</id>
<phase>initialize</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>python3</executable>
<arguments>
<argument>-m</argument>
<argument>venv</argument>
<argument>3.8</argument>
<argument>${venv-dir}/venv</argument>
</arguments>
</configuration>
</execution>
The static analysis ini file contains:
[COMMON]
build_report_branch=master
[STATIC_ANALYSIS.JAVA]
mvn.root.pom.dir=..
And mvn clean install results in the following error:
[INFO] Found plugin jacoco-maven-plugin for project com.oracle.pic.orp.event-driven-anti-entropy
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/private/var/folders/6v/5zz6ddk92lz7schlf6gkmhv40000gn/T/venv/lib/python3.12/site-packages/staticanalysis/validate.py", line 320, in <module>
main()
File "/private/var/folders/6v/5zz6ddk92lz7schlf6gkmhv40000gn/T/venv/lib/python3.12/site-packages/staticanalysis/validate.py", line 279, in main
response_status, detailed_results = validate.run_checks()
^^^^^^^^^^^^^^^^^^^^^
File "/private/var/folders/6v/5zz6ddk92lz7schlf6gkmhv40000gn/T/venv/lib/python3.12/site-packages/lavacommons/validation.py", line 13, in run_checks
return self.__execute_checks(self.get_validators())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/private/var/folders/6v/5zz6ddk92lz7schlf6gkmhv40000gn/T/venv/lib/python3.12/site-packages/lavacommons/validation.py", line 25, in __execute_checks
validator_result = validator.validate()
^^^^^^^^^^^^^^^^^^^^
File "/private/var/folders/6v/5zz6ddk92lz7schlf6gkmhv40000gn/T/venv/lib/python3.12/site-packages/staticanalysis/checks/pom/jacoco_plugin_enabled.py", line 31, in validate
coverages = self.get_unit_test_coverage()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/private/var/folders/6v/5zz6ddk92lz7schlf6gkmhv40000gn/T/venv/lib/python3.12/site-packages/staticanalysis/checks/pom_validator.py", line 133, in get_unit_test_coverage
self.find_coverage_executions(project, jacoco_plugin, plugin_name, project_id, is_java_module,
File "/private/var/folders/6v/5zz6ddk92lz7schlf6gkmhv40000gn/T/venv/lib/python3.12/site-packages/staticanalysis/checks/pom_validator.py", line 148, in find_coverage_executions
self.check_limits(execution, project_id, is_java_module, results)
File "/private/var/folders/6v/5zz6ddk92lz7schlf6gkmhv40000gn/T/venv/lib/python3.12/site-packages/staticanalysis/checks/pom_validator.py", line 175, in check_limits
"minimum_value": decimal.Decimal(limit.find("./m:minimum",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>]