diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bf8fea..45486cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- [#17](https://github.com/green-code-initiative/ecoCode-python/issues/17) EC7 - correction setter problem on constructor method + ### Deleted ## [1.4.2] - 2024-01-11 diff --git a/src/main/java/fr/greencodeinitiative/python/checks/AvoidGettersAndSetters.java b/src/main/java/fr/greencodeinitiative/python/checks/AvoidGettersAndSetters.java index a88f4df..04c8783 100644 --- a/src/main/java/fr/greencodeinitiative/python/checks/AvoidGettersAndSetters.java +++ b/src/main/java/fr/greencodeinitiative/python/checks/AvoidGettersAndSetters.java @@ -44,6 +44,11 @@ public class AvoidGettersAndSetters extends PythonSubscriptionCheck { public void initialize(Context context) { context.registerSyntaxNodeConsumer(Tree.Kind.FUNCDEF, ctx -> { FunctionDef functionDef = (FunctionDef) ctx.syntaxNode(); + + if (isConstructorMethod(functionDef)) { + return; // Ignore constructors + } + StatementList statementList = functionDef.body(); List statements = statementList.statements(); if (functionDef.parent().parent().is(Tree.Kind.CLASSDEF)) { @@ -53,6 +58,10 @@ public void initialize(Context context) { }); } + private boolean isConstructorMethod(FunctionDef functionDef) { + return functionDef.name() != null && "__init__".equals(functionDef.name().name()); + } + public void checkAllSetters(List statements, FunctionDef functionDef, SubscriptionContext ctx) { if (statements.size() == 1 && statements.get(0).is(Tree.Kind.ASSIGNMENT_STMT)) { AssignmentStatement assignmentStatement = (AssignmentStatement) statements.get(0); diff --git a/src/test/resources/checks/avoidGettersAndSettersCompliant.py b/src/test/resources/checks/avoidGettersAndSettersCompliant.py index 13fa802..f0af415 100644 --- a/src/test/resources/checks/avoidGettersAndSettersCompliant.py +++ b/src/test/resources/checks/avoidGettersAndSettersCompliant.py @@ -1,5 +1,9 @@ from datetime import date +class Something: + def __init__(self, value): + self.value = value + class Client(): def __init__(self, age, weight):