SA0187 : Duplicated string literals complicate the refactoring |
![]() |
The topic describes the SA0187 analysis rule.

Duplicated string literals complicate the refactoring

The rule reports more than one usage of a single string literal.
Duplicating the same string literal makes the process of refactoring more difficult and error-prone as all literal occurrences must be updated.

Consider storing the literal value in a variable and referencing this variable instead of duplicating the literal in more places.

The rule has a Batch scope and is applied only on the SQL script.

Name | Description | Default Value |
---|---|---|
NumberOfDuplicatesThreshold |
Maximum number of allowed duplicates of a string. |
3 |
MinimalStringLength |
Minimal length of a string that to be tested for duplicates. |
3 |

The rule does not need Analysis Context or SQL Connection.


Design Rules, Code Smells

There is no additional info for this rule.

SQL
1CREATE TABLE Test.Greeting 2( 3GreetingId INT IDENTITY (1,1) PRIMARY KEY, 4Message nvarchar(255) NOT NULL, 5) 6 7INSERT INTO Test.Greeting (Message) 8SELECT 'Hello!','Hello','Hello12','123','123','123','123','123' 9UNION ALL 10SELECT 'Hi!' 11UNION ALL 12SELECT 'Hello, world!' 13 14INSERT INTO Test.Greeting (Message) 15VALUES ('How do yo do?'), 16 ('Good morning!'), 17 ('Good night!') 18 19DELETE Test.Greeting WHERE GreetingId = 3 20 21SELECT * FROM Test.Greeting g 22WHERE 23g.Message like 'Hello%' 24 25DROP TABLE Test.Greeting |

Message | Line | Column | |
---|---|---|---|
1 | SA0187 : The string literal ‘123’ is duplicated 4 times in the current batch. Extract the string into a variable and use the variable instead. | 8 | 34 |
