mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-01 16:00:51 +03:00
fix(cfe-patch-method): ключ сравнения контроля — по измеренному правилу платформы
-Check считал дрейфом расхождение по пустым строкам (шумный ложный ДРЕЙФ, из-за которого -Actualize предлагал косметическую перезапись тела) и НЕ считал дрейфом расхождение по пробелам между токенами (тихий ложный АКТУАЛЕН — платформа такой метод молча не применяет, он рвётся при первом вызове). Правило платформы измерено на стенде: 27 вариантов косметики, платформы 8.3.24 и 8.3.27, общий модуль и модуль объекта, два независимых оракула (/CheckCanApplyConfigurationExtensions и рантайм-вызов метода) — результат везде одинаковый. Каждая строка Trim, строки, пустые после Trim, из сравнения выброшены, всё остальное байт в байт и с учётом регистра: значимы пробелы между токенами, пробелы внутри строкового литерала, комментарии целиком и регистр. Вердикт АКТУАЛЕН считается по этому правилу (Get-ControlKey / control_key); в PS сравнение ordinal, иначе -eq игнорирует регистр и порт расходится с Python. Эвристики слияния (якоря, поглощение, дифф) остались на прежнем мягком normalize. Кейсы: допуски (пустые строки, отступ, хвостовые пробелы) и два негатива — пробелы между токенами и регистр идентификатора. Co-Authored-By: Sergei Pleshanov <2357qwr@gmail.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QoAJmoNbgWKobA7JGgN5S3
This commit is contained in:
co-authored by
Sergei Pleshanov
Claude Opus 5
parent
4fa57c73b5
commit
533dd0ded4
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"name": "-Check: контекст отличается только пустыми строками, отступом и хвостовыми пробелами — актуален, как у платформы",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "meta-compile/scripts/meta-compile",
|
||||
"input": {
|
||||
"type": "CommonModule",
|
||||
"name": "БатчМод",
|
||||
"context": "server"
|
||||
},
|
||||
"args": {
|
||||
"-JsonPath": "{inputFile}",
|
||||
"-OutputDir": "{workDir}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"writeFile": {
|
||||
"path": "CommonModules/БатчМод/Ext/Module.bsl",
|
||||
"content": "#Область ПрограммныйИнтерфейс\n\nФункция РасчётА() Экспорт\n\t\n\tХ = 1;\n\t\n\tВозврат Х;\n\t\nКонецФункции\n\nФункция РасчётБ() Экспорт\n\tY = 2;\n\n\tВозврат Y;\nКонецФункции\n\n#КонецОбласти\n"
|
||||
}
|
||||
},
|
||||
{
|
||||
"script": "cfe-init/scripts/cfe-init",
|
||||
"args": {
|
||||
"-Name": "Тест",
|
||||
"-OutputDir": "{workDir}/cfe",
|
||||
"-ConfigPath": "{workDir}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"script": "cfe-borrow/scripts/cfe-borrow",
|
||||
"args": {
|
||||
"-ExtensionPath": "{workDir}/cfe",
|
||||
"-ConfigPath": "{workDir}",
|
||||
"-Object": "CommonModule.БатчМод"
|
||||
}
|
||||
},
|
||||
{
|
||||
"writeFile": {
|
||||
"path": "cfe/CommonModules/БатчМод/Ext/Module.bsl",
|
||||
"content": "#Область ПрограммныйИнтерфейс\n&ИзменениеИКонтроль(\"РасчётА\")\nФункция Тест_РасчётА()\n\n\tХ = 1;\n#Вставка\n\tХ = Х + 1;\n#КонецВставки\n\n\t\t\tВозврат Х; \nКонецФункции\n&ИзменениеИКонтроль(\"РасчётБ\")\nФункция Тест_РасчётБ()\n\tY = 2;\n\tВозврат Y;\nКонецФункции\n#КонецОбласти\n"
|
||||
}
|
||||
}
|
||||
],
|
||||
"params": {
|
||||
"extensionPath": "cfe"
|
||||
},
|
||||
"args_extra": [
|
||||
"-Check"
|
||||
],
|
||||
"expect": {
|
||||
"stdoutContains": "2/2 актуальны",
|
||||
"stdoutNotContains": "ДРЕЙФ"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user