-
Notifications
You must be signed in to change notification settings - Fork 106
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1567 from artbear/str-template-1235
- Loading branch information
Showing
11 changed files
with
479 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# Неверное использование "СтрШаблон" (IncorrectUseOfStrTemplate) | ||
|
||
Тип | Поддерживаются<br>языки | Важность | Включена<br>по умолчанию | Время на<br>исправление (мин) | Тэги | ||
:-: | :-: | :-: | :-: | :-: | :-: | ||
`Ошибка` | `BSL`<br>`OS` | `Блокирующий` | `Да` | `1` | `brainoverload`<br>`suspicious`<br>`unpredictable` | ||
|
||
<!-- Блоки выше заполняются автоматически, не трогать --> | ||
## Описание диагностики | ||
<!-- Описание диагностики заполняется вручную. Необходимо понятным языком описать смысл и схему работу --> | ||
При использовании метода `СтрШаблон` нужно внимательно составлять шаблонную строку и передавать правильное количество параметров. | ||
И можно довольно легко ошибиться при передаче значений для `СтрШаблон`. | ||
|
||
Важно помнить, что | ||
- `СтрШаблон` принимает только параметры от `%1` до `%10` | ||
- если требуется передать сразу после шаблона число, нужно добавить скобки - `"%(1)45"` | ||
|
||
## Примеры | ||
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию --> | ||
|
||
1. Количество переданных после шаблонной строки значений не равно (меньше или больше) максимальному номеру из строки вида %N внутри шаблонной строки | ||
- `СтрШаблон("Наименование (версия %1)");` | ||
- `СтрШаблон("%1 (версия %2)", Наименование);` | ||
|
||
2. не передается вообще никаких значений, кроме форматированной строки | ||
из-за большого число скобок внутри несложного выражения с `НСтр` и `СтрШаблон` | ||
Пример: | ||
- `СтрШаблон(НСтр("ru='Наименование (версия %1)'", Версия()));` | ||
- здесь ошибочно не закрыта скобка для `НСтр` | ||
- в итоге выражение после вычисления `НСтр` становится пустым. | ||
|
||
Выявить подобную ошибку чтением кода довольно сложно из-за наличия скобок. | ||
И можно поймать только в рантайме, получив исключение. | ||
|
||
Правильный вариант: | ||
- `СтрШаблон(НСтр("ru='Наименование (версия %1)'"), Версия());` | ||
|
||
3. Пример передачи цифр сразу после шаблонного значения | ||
- `СтрШаблон("Наименование %(1)2"), Наименование);` | ||
|
||
## Источники | ||
<!-- Необходимо указывать ссылки на все источники, из которых почерпнута информация для создания диагностики --> | ||
<!-- Примеры источников | ||
* Источник: [Стандарт: Тексты модулей](https://its.1c.ru/db/v8std#content:456:hdoc) | ||
* Полезная информация: [Отказ от использования модальных окон](https://its.1c.ru/db/metod8dev#content:5272:hdoc) | ||
* Источник: [Cognitive complexity, ver. 1.4](https://www.sonarsource.com/docs/CognitiveComplexity.pdf) --> | ||
|
||
- [Требования по локализации - Стандарт](https://its.1c.ru/db/v8std/content/763/hdoc) | ||
|
||
## Сниппеты | ||
|
||
<!-- Блоки ниже заполняются автоматически, не трогать --> | ||
### Экранирование кода | ||
|
||
```bsl | ||
// BSLLS:IncorrectUseOfStrTemplate-off | ||
// BSLLS:IncorrectUseOfStrTemplate-on | ||
``` | ||
|
||
### Параметр конфигурационного файла | ||
|
||
```json | ||
"IncorrectUseOfStrTemplate": false | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# Incorrect use of "StrTemplate" (IncorrectUseOfStrTemplate) | ||
|
||
Type | Scope | Severity | Activated<br>by default | Minutes<br>to fix | Tags | ||
:-: | :-: | :-: | :-: | :-: | :-: | ||
`Error` | `BSL`<br>`OS` | `Blocker` | `Yes` | `1` | `brainoverload`<br>`suspicious`<br>`unpredictable` | ||
|
||
<!-- Блоки выше заполняются автоматически, не трогать --> | ||
## Description | ||
<!-- Описание диагностики заполняется вручную. Необходимо понятным языком описать смысл и схему работу --> | ||
|
||
## Examples | ||
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию --> | ||
|
||
## Sources | ||
<!-- Необходимо указывать ссылки на все источники, из которых почерпнута информация для создания диагностики --> | ||
<!-- Примеры источников | ||
* Источник: [Стандарт: Тексты модулей](https://its.1c.ru/db/v8std#content:456:hdoc) | ||
* Полезная информация: [Отказ от использования модальных окон](https://its.1c.ru/db/metod8dev#content:5272:hdoc) | ||
* Источник: [Cognitive complexity, ver. 1.4](https://www.sonarsource.com/docs/CognitiveComplexity.pdf) --> | ||
|
||
## Snippets | ||
|
||
<!-- Блоки ниже заполняются автоматически, не трогать --> | ||
### Diagnostic ignorance in code | ||
|
||
```bsl | ||
// BSLLS:IncorrectUseOfStrTemplate-off | ||
// BSLLS:IncorrectUseOfStrTemplate-on | ||
``` | ||
|
||
### Parameter for config | ||
|
||
```json | ||
"IncorrectUseOfStrTemplate": false | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.