Home

String literals should not be duplicated

Rule description

  • String literals should not be duplicated

 

Non-compliant Code Example

DECLARE
	NO_DATA_FOUND EXCEPTION;

BEGIN
	FOR i IN 1 .. CUSTOMER_TABLE.COUNT
		LOOP
			IF CUSTOMER_TABLE(i) IS NOT NULL THEN
				DBMS_OUTPUT.PUT( i || ' = (' || CUSTOMER_TABLE(i).Name || ', ' || CUSTOMER_TABLE(i).PhoneNumber || ')' );
			END IF;
		END LOOP;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
	Log_Errors ( 'No data found');
  WHEN ERRORS THEN
	Log_Errors ( 'Error Log...' || Chr(10) || DBMS_UTILITY.FORMAT_ERROR_STACK() );   Log_Errors ( 'Error Log...' || Chr(10) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() );     --Non compliant code (String literals are duplicated)
    DBMS_OUTPUT.PUT_LINE ( '----------' );
    RAISE;
END CUSTOMER_TABLE_ITERATION;

Compliant Code Example

DECLARE
	NO_DATA_FOUND EXCEPTION;
	ERROR_MESSAGE VARCHAR2(20):='Error Log...';         --Compliant code (Added variable with string literals)

BEGIN
	FOR i IN 1 .. CUSTOMER_TABLE.COUNT
		LOOP
			IF CUSTOMER_TABLE(i) IS NOT NULL THEN
				DBMS_OUTPUT.PUT( i || ' = (' || CUSTOMER_TABLE(i).Name || ', ' || CUSTOMER_TABLE(i).PhoneNumber || ')' );
			END IF;
		END LOOP;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
	Log_Errors ( 'No data found');
  WHEN ERRORS THEN
	Log_Errors ( ERROR_MESSAGE || Chr(10) || DBMS_UTILITY.FORMAT_ERROR_STACK() );  Log_Errors ( ERROR_MESSAGE || Chr(10) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() ); --Compliant code (Added string literals variable and used at all locations)
    DBMS_OUTPUT.PUT_LINE ( '----------' );
    RAISE;
END CUSTOMER_TABLE_ITERATION;
Visual Expert 2020
 VEPLSQLRULE46