From fc00f4bd73631f75710b917b6e4eafed91a110a7 Mon Sep 17 00:00:00 2001 From: David Kunzmann Date: Mon, 8 Sep 2025 11:34:46 +0200 Subject: [PATCH 1/4] SCANPY-214: Change property name --sonar-cpd-python-minimum-tokens to --sonar-cpd-py-minimum-tokens --- src/pysonar_scanner/configuration/cli.py | 8 ++++---- src/pysonar_scanner/configuration/properties.py | 8 ++++---- tests/unit/test_configuration_cli.py | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/pysonar_scanner/configuration/cli.py b/src/pysonar_scanner/configuration/cli.py index e28b3dde..fce3baf3 100644 --- a/src/pysonar_scanner/configuration/cli.py +++ b/src/pysonar_scanner/configuration/cli.py @@ -300,14 +300,14 @@ def __create_parser(cls): help="Sets the limit in MB for files to be discarded from the analysis scope if the size is greater than specified", ) scanner_behavior_group.add_argument( - "--sonar-cpd-python-minimum-tokens", - "-Dsonar.cpd.python.minimumTokens", + "--sonar-cpd-py-minimum-tokens", + "-Dsonar.cpd.py.minimumTokens", type=int, help="Minimum number of tokens to be considered as a duplicated block of code", ) scanner_behavior_group.add_argument( - "--sonar-cpd-python-minimum-lines", - "-Dsonar.cpd.python.minimumLines", + "--sonar-cpd-py-minimum-lines", + "-Dsonar.cpd.py.minimumLines", type=int, help="Minimum number of tokens to be considered as a duplicated block of code", ) diff --git a/src/pysonar_scanner/configuration/properties.py b/src/pysonar_scanner/configuration/properties.py index 0b3b9480..b6becae0 100644 --- a/src/pysonar_scanner/configuration/properties.py +++ b/src/pysonar_scanner/configuration/properties.py @@ -67,8 +67,8 @@ SONAR_EXCLUSIONS: Key = "sonar.exclusions" SONAR_TESTS: Key = "sonar.tests" SONAR_FILESIZE_LIMIT: Key = "sonar.filesize.limit" -SONAR_CPD_PYTHON_MINIMUM_TOKENS: Key = "sonar.cpd.python.minimumTokens" -SONAR_CPD_PYTHON_MINIMUM_LINES: Key = "sonar.cpd.python.minimumLines" +SONAR_CPD_PYTHON_MINIMUM_TOKENS: Key = "sonar.cpd.py.minimumTokens" +SONAR_CPD_PYTHON_MINIMUM_LINES: Key = "sonar.cpd.py.minimumLines" SONAR_LOG_LEVEL: Key = "sonar.log.level" SONAR_QUALITYGATE_WAIT: Key = "sonar.qualitygate.wait" SONAR_QUALITYGATE_TIMEOUT: Key = "sonar.qualitygate.timeout" @@ -361,12 +361,12 @@ def env_variable_name(self) -> str: Property( name=SONAR_CPD_PYTHON_MINIMUM_TOKENS, default_value=None, - cli_getter=lambda args: args.sonar_cpd_python_minimum_tokens + cli_getter=lambda args: args.sonar_cpd_py_minimum_tokens ), Property( name=SONAR_CPD_PYTHON_MINIMUM_LINES, default_value=None, - cli_getter=lambda args: args.sonar_cpd_python_minimum_lines + cli_getter=lambda args: args.sonar_cpd_py_minimum_lines ), Property( name=SONAR_LOG_LEVEL, diff --git a/tests/unit/test_configuration_cli.py b/tests/unit/test_configuration_cli.py index e2e02466..2fb55d44 100644 --- a/tests/unit/test_configuration_cli.py +++ b/tests/unit/test_configuration_cli.py @@ -376,9 +376,9 @@ def test_impossible_os_choice(self): "--sonar-filesize-limit", "1000", "--sonar-scm-exclusions-disabled", - "--sonar-cpd-python-minimum-tokens", + "--sonar-cpd-py-minimum-tokens", "15", - "--sonar-cpd-python-minimum-lines", + "--sonar-cpd-py-minimum-lines", "100", "--sonar-log-level", "INFO", @@ -487,8 +487,8 @@ def test_all_cli_args(self): "-Dsonar.projectBaseDir=mySonarProjectBaseDir", "-Dsonar.filesize.limit=1000", "-Dsonar.scm.exclusions.disabled=true", - "-Dsonar.cpd.python.minimumTokens=15", - "-Dsonar.cpd.python.minimumLines=100", + "-Dsonar.cpd.py.minimumTokens=15", + "-Dsonar.cpd.py.minimumLines=100", "-Dsonar.qualitygate.wait=true", "-Dsonar.qualitygate.timeout=120", "-Dsonar.externalIssuesReportPaths=path/to/external/issues", From ab7e173b63eb4155ad7fbd762afa60d88f8098d7 Mon Sep 17 00:00:00 2001 From: David Kunzmann Date: Mon, 8 Sep 2025 11:37:42 +0200 Subject: [PATCH 2/4] Updated doc --- CLI_ARGS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CLI_ARGS.md b/CLI_ARGS.md index a111fc20..07e46fec 100644 --- a/CLI_ARGS.md +++ b/CLI_ARGS.md @@ -52,8 +52,8 @@ | `--sonar-branch-name`, `-Dsonar.branch.name` | Name of the branch being analyzed | | `--sonar-build-string`, `-Dsonar.buildString` | The string passed with this property will be stored with the analysis and available in the results of api/project_analyses/search, thus allowing you to later identify a specific analysis and obtain its key for use with api/new_code_periods/set on the SPECIFIC_ANALYSIS type | | `--sonar-coverage-exclusions`, `--sonar.coverage.exclusions`, `-Dsonar.coverage.exclusions` | Defines the source files to be excluded from the code coverage analysis. | -| `--sonar-cpd-python-minimum-lines`, `-Dsonar.cpd.python.minimumLines` | Minimum number of tokens to be considered as a duplicated block of code | -| `--sonar-cpd-python-minimum-tokens`, `-Dsonar.cpd.python.minimumTokens` | Minimum number of tokens to be considered as a duplicated block of code | +| `--sonar-cpd-py-minimum-lines`, `-Dsonar.cpd.py.minimumLines` | Minimum number of tokens to be considered as a duplicated block of code | +| `--sonar-cpd-py-minimum-tokens`, `-Dsonar.cpd.py.minimumTokens` | Minimum number of tokens to be considered as a duplicated block of code | | `--sonar-links-ci`, `-Dsonar.links.ci` | The URL of the continuous integration system used | | `--sonar-links-homepage`, `-Dsonar.links.homepage` | The URL of the build project home page | | `--sonar-links-issue`, `-Dsonar.links.issue` | The URL to the issue tracker being used | From 37e9b3083b6fe3b73b20a2a167d0fbdd027ec852 Mon Sep 17 00:00:00 2001 From: David Kunzmann Date: Mon, 8 Sep 2025 14:28:15 +0200 Subject: [PATCH 3/4] Fix after review --- src/pysonar_scanner/configuration/cli.py | 4 ++++ tests/unit/test_configuration_cli.py | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/pysonar_scanner/configuration/cli.py b/src/pysonar_scanner/configuration/cli.py index fce3baf3..8c0de09f 100644 --- a/src/pysonar_scanner/configuration/cli.py +++ b/src/pysonar_scanner/configuration/cli.py @@ -302,12 +302,16 @@ def __create_parser(cls): scanner_behavior_group.add_argument( "--sonar-cpd-py-minimum-tokens", "-Dsonar.cpd.py.minimumTokens", + "--sonar-cpd-python-minimum-tokens", + "-Dsonar.cpd.python.minimumTokens", type=int, help="Minimum number of tokens to be considered as a duplicated block of code", ) scanner_behavior_group.add_argument( "--sonar-cpd-py-minimum-lines", "-Dsonar.cpd.py.minimumLines", + "--sonar-cpd-python-minimum-lines", + "-Dsonar.cpd.python.minimumLines", type=int, help="Minimum number of tokens to be considered as a duplicated block of code", ) diff --git a/tests/unit/test_configuration_cli.py b/tests/unit/test_configuration_cli.py index 2fb55d44..297f80cc 100644 --- a/tests/unit/test_configuration_cli.py +++ b/tests/unit/test_configuration_cli.py @@ -561,6 +561,29 @@ def test_both_boolean_args_given(self): configuration = CliConfigurationLoader.load() self.assertTrue(configuration.get(SONAR_SCM_EXCLUSIONS_DISABLED)) + @patch( + "sys.argv", + [ + "myscript.py", + "--token", + "myToken", + "--sonar-project-key", + "myProjectKey", + "-Dsonar.cpd.python.minimumLines=10", + "--sonar-cpd-python-minimum-tokens", + "20", + ], + ) + def test_cpd_config_with_py_property_name(self): + configuration = CliConfigurationLoader.load() + expected_configuration = { + SONAR_TOKEN: "myToken", + SONAR_PROJECT_KEY: "myProjectKey", + SONAR_CPD_PYTHON_MINIMUM_LINES: 10, + SONAR_CPD_PYTHON_MINIMUM_TOKENS: 20, + } + self.assertDictEqual(configuration, expected_configuration) + @patch( "sys.argv", [ From 4b95f4d43244528a1dde11539b56210447adee1f Mon Sep 17 00:00:00 2001 From: David Kunzmann Date: Mon, 8 Sep 2025 14:31:06 +0200 Subject: [PATCH 4/4] Updated documentation --- CLI_ARGS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CLI_ARGS.md b/CLI_ARGS.md index 07e46fec..c476719a 100644 --- a/CLI_ARGS.md +++ b/CLI_ARGS.md @@ -52,8 +52,8 @@ | `--sonar-branch-name`, `-Dsonar.branch.name` | Name of the branch being analyzed | | `--sonar-build-string`, `-Dsonar.buildString` | The string passed with this property will be stored with the analysis and available in the results of api/project_analyses/search, thus allowing you to later identify a specific analysis and obtain its key for use with api/new_code_periods/set on the SPECIFIC_ANALYSIS type | | `--sonar-coverage-exclusions`, `--sonar.coverage.exclusions`, `-Dsonar.coverage.exclusions` | Defines the source files to be excluded from the code coverage analysis. | -| `--sonar-cpd-py-minimum-lines`, `-Dsonar.cpd.py.minimumLines` | Minimum number of tokens to be considered as a duplicated block of code | -| `--sonar-cpd-py-minimum-tokens`, `-Dsonar.cpd.py.minimumTokens` | Minimum number of tokens to be considered as a duplicated block of code | +| `--sonar-cpd-py-minimum-lines`, `-Dsonar.cpd.py.minimumLines`, `--sonar-cpd-python-minimum-lines`, `-Dsonar.cpd.python.minimumLines` | Minimum number of tokens to be considered as a duplicated block of code | +| `--sonar-cpd-py-minimum-tokens`, `-Dsonar.cpd.py.minimumTokens`, `--sonar-cpd-python-minimum-tokens`, `-Dsonar.cpd.python.minimumTokens` | Minimum number of tokens to be considered as a duplicated block of code | | `--sonar-links-ci`, `-Dsonar.links.ci` | The URL of the continuous integration system used | | `--sonar-links-homepage`, `-Dsonar.links.homepage` | The URL of the build project home page | | `--sonar-links-issue`, `-Dsonar.links.issue` | The URL to the issue tracker being used |