-
Notifications
You must be signed in to change notification settings - Fork 22
Description
Describe the bug
During sonar scanning, some python file raises a NullPointerException with too many conditional IF, ELSEIF or ELSE statements :
java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because "variablesParentLevelMap" is null at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck$VariablesPerLevelDataStructure.internalGetVariableUsageOfNearestParent(AvoidMultipleIfElseStatementCheck.java:335) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck$VariablesPerLevelDataStructure.internalIncrementVariableUsage(AvoidMultipleIfElseStatementCheck.java:316) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck$VariablesPerLevelDataStructure.incrementVariableUsageForLevel(AvoidMultipleIfElseStatementCheck.java:302) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck.computeVariables(AvoidMultipleIfElseStatementCheck.java:180) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck.computeConditionVariables(AvoidMultipleIfElseStatementCheck.java:168) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck.computeIfVariables(AvoidMultipleIfElseStatementCheck.java:141) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck.visitIfNode(AvoidMultipleIfElseStatementCheck.java:112) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck.visitNodeContent(AvoidMultipleIfElseStatementCheck.java:92) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck.visitIfNode(AvoidMultipleIfElseStatementCheck.java:115) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck.visitNodeContent(AvoidMultipleIfElseStatementCheck.java:92) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck.visitNode(AvoidMultipleIfElseStatementCheck.java:75) at org.greencodeinitiative.creedengo.python.checks.AvoidMultipleIfElseStatementCheck.visitFuncDef(AvoidMultipleIfElseStatementCheck.java:64) at org.sonar.python.SubscriptionVisitor$SubscriptionContextImpl.execute(na:835) at java.base/java.util.ArrayList.forEach(Unknown Source) at org.sonar.python.SubscriptionVisitor.scan(na:3505) at org.sonar.python.SubscriptionVisitor.analyze(na:2169) at org.sonar.plugins.python.PythonScanner.executeChecks(na:2138) at org.sonar.plugins.python.PythonScanner.lambda$executeOtherChecks$1(na:1722) at org.sonar.plugins.python.PythonScanner.runLockedByRepository(na:520) at org.sonar.plugins.python.PythonScanner.lambda$executeOtherChecks$2(na:1722) at java.base/java.util.HashMap.forEach(Unknown Source) at org.sonar.plugins.python.PythonScanner.executeOtherChecks(na:1722) at org.sonar.plugins.python.PythonScanner.scanFile(na:1294) at org.sonar.plugins.python.Scanner.processFile(na:348) at org.sonar.plugins.python.Scanner.lambda$processFiles$0(na:2690) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.stream.ReferencePipeline$Head.forEach(Unknown Source) at org.sonar.plugins.python.Scanner.processFiles(na:2690) at org.sonar.plugins.python.Scanner.execute(na:2361) at org.sonar.plugins.python.PythonSensor.execute(na:1842) at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:69) at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:88) at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:61) at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:79) at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61) at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:80) at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227) at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206) at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:212) at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:208) at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:178) at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227) at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206) at org.sonar.scanner.bootstrap.SpringScannerContainer.doAfterStart(SpringScannerContainer.java:339) at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227) at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206) at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:142) at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227) at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206) at org.sonar.scanner.bootstrap.ScannerMain.runScannerEngine(ScannerMain.java:150) at org.sonar.scanner.bootstrap.ScannerMain.run(ScannerMain.java:67) at org.sonar.scanner.bootstrap.ScannerMain.main(ScannerMain.java:53)
It seems that variablesParentLevelMap is null.
Could you check if this is a bug in the rule or develop a fix?
To Reproduce
Steps to reproduce the behavior:
Run the scanner on a python file with too many IF/ELSE statements
Software Versions
- SonarQube Version: 2025.4
- Plugin Version: 2.2.0
Thanks for your help.
Best Regards,