diff --git a/rules/S6730/metadata.json b/rules/S6730/metadata.json new file mode 100644 index 0000000000..2c63c08510 --- /dev/null +++ b/rules/S6730/metadata.json @@ -0,0 +1,2 @@ +{ +} diff --git a/rules/S6730/python/metadata.json b/rules/S6730/python/metadata.json new file mode 100644 index 0000000000..674d52e098 --- /dev/null +++ b/rules/S6730/python/metadata.json @@ -0,0 +1,25 @@ +{ + "title": "Deprecated NumPy aliases of built-in types should not be used", + "type": "CODE_SMELL", + "status": "ready", + "remediation": { + "func": "Constant\/Issue", + "constantCost": "5min" + }, + "tags": [ + "numpy", + "data-science" + ], + "defaultSeverity": "Major", + "ruleSpecification": "RSPEC-6730", + "sqKey": "S6730", + "scope": "All", + "defaultQualityProfiles": ["Sonar way"], + "quickfix": "unknown", + "code": { + "impacts": { + "MAINTAINABILITY": "MEDIUM" + }, + "attribute": "CONVENTIONAL" + } +} diff --git a/rules/S6730/python/rule.adoc b/rules/S6730/python/rule.adoc new file mode 100644 index 0000000000..0667e785c7 --- /dev/null +++ b/rules/S6730/python/rule.adoc @@ -0,0 +1,53 @@ +This rule raises an issue when a deprecated Numpy alias of a built-in type is used. + +== Why is this an issue? + +In NumPy, some built-in types such as `int` have aliases in the form of `numpy.int`. However, these aliases have been deprecated and should not be used anymore. + +The following deprecated aliases should be replaced with their built-in alternatives: + +[frame=all] +[cols="^1,^1"] +|=== +|Deprecated name|Equivalent built-in type + +|numpy.bool|bool +|numpy.int|int +|numpy.float|float +|numpy.complex|complex +|numpy.object|object +|numpy.str|str +|numpy.long|int +|numpy.unicode|str +|=== + +== How to fix it + +To fix this issue, make sure to replace deprecated NumPy type aliases with their corresponding built-in types. + +=== Code examples + +==== Noncompliant code example + +[source,python,diff-id=1,diff-type=noncompliant] +---- +import numpy as np +def foo(): + x = np.int(42) # Noncompliant: deprecated type alias +---- + +==== Compliant solution + +[source,python,diff-id=1,diff-type=compliant] +---- +import numpy as np +def foo(): + x = 42 # Compliant +---- + + +== Resources +=== Documentation + +* NumPy Documentation - https://numpy.org/devdocs/user/basics.types.html#basics-types[Data types] +* NumPy Documentation - https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations[Deprecation of aliases of builtin types]