Home

String literals should not be duplicated

Rule description

  • String literals should not be duplicated. While checking for the duplicate string ignoring string in the EXEC sys.sp_addextendedproperty. So string in the extended property call is ignored.

 

Non-compliant Code Example

DECLARE @Number int;
SET @Number = 50;  
IF @Number > 100  AND @Number < 200      
    PRINT 'The number is large.';   --Non compliant code (String literals are duplicated)
ELSE 
	BEGIN
		IF @Number < 10  
			PRINT 'The number is small.';   --Non compliant code (String literals are duplicated)
		ELSE  
			PRINT 'The number is medium.';   --Non compliant code (String literals are duplicated)
   END ;  

IF @Number > 200      
    PRINT 'The number is large.';   --Non compliant code (String literals are duplicated)

IF @Number = 0  
	PRINT 'The number is small.';   --Non compliant code (String literals are duplicated)
ELSE  
	PRINT 'The number is medium.';   --Non compliant code (String literals are duplicated)
     
GO 

Compliant Code Example

Declare @SmallMsg varchar(200) = 'The number is small.';
Declare @MediumMsg varchar(200) = 'The number is medium.';
Declare @LargeMsg varchar(200) = 'The number is large.';

DECLARE @Number int;
SET @Number = 50;  
IF @Number > 100  AND @Number < 200      
    PRINT @LargeMsg;   --Compliant code (String literals declared above and used by variable at all locations)
ELSE 
	BEGIN
		IF @Number < 10  
			PRINT @SmallMsg;   --Compliant code
		ELSE  
			PRINT @MediumMsg ;   --Compliant code
   END ;  

IF @Number > 200      
    PRINT @LargeMsg;   --Compliant code

IF @Number = 0  
	PRINT @SmallMsg;   --Compliant code
ELSE  
	PRINT @MediumMsg ;   --Compliant code
     
GO 
Visual Expert 2020
 VETSQLRULE65