Details
-
Type:
Code Smell Detection
-
Status: Active
-
Resolution: Unresolved
-
Labels:
-
Message:Refactor this procedure to take parameters.
-
Default Severity:Major
-
Impact:Low
-
Likelihood:High
-
Default Quality Profiles:Sonar way
-
Legacy Key:ProcedureWithoutParametersCheck
-
Covered Languages:PL/SQL
-
Remediation Function:Constant/Issue
-
Constant Cost:1h
Description
Procedures which don't accept parameters are likely to either not be reused that often or to depend on global variables instead. Refactoring those procedures to take parameters will make them both more flexible and reusable.
Noncompliant Code Example
SET SERVEROUTPUT ON DECLARE name VARCHAR2(42) := 'John'; PROCEDURE print_name; -- Noncompliant PROCEDURE print_name AS -- Noncompliant BEGIN DBMS_OUTPUT.PUT_LINE('Name: ' || name); END; BEGIN print_name; END; /
Compliant Solution
SET SERVEROUTPUT ON DECLARE PROCEDURE print_name(name VARCHAR2) AS -- Compliant BEGIN DBMS_OUTPUT.PUT_LINE('Name: ' || name); END; BEGIN print_name('John'); END; /
Attachments
Issue Links
- is related to
-
RSPEC-1902 Subprocedures should not reference global variables
- Active
-
RSPEC-2011 "global" should not be used
- Active