├── LICENSE
├── README.md
└── src
├── Catalogs
├── ОбнаруживаемыеОшибки.xml
├── Правила.xml
└── Требования.xml
├── CommonModules
├── бпк_ПроверкаКодаПовтИсп.xml
├── бпк_ПроверкаКодаПовтИсп
│ └── Ext
│ │ └── Module.bsl
├── бпк_ПроверкаКодаСервер.xml
└── бпк_ПроверкаКодаСервер
│ └── Ext
│ └── Module.bsl
├── CommonPictures
├── УровеньКритичностиОшибка.xml
├── УровеньКритичностиОшибка
│ └── Ext
│ │ ├── Picture.xml
│ │ └── Picture
│ │ └── Picture.zip
├── УровеньКритичностиРекомендация.xml
├── УровеньКритичностиРекомендация
│ └── Ext
│ │ ├── Picture.xml
│ │ └── Picture
│ │ └── Picture.png
├── бпк_ИТС.xml
└── бпк_ИТС
│ └── Ext
│ ├── Picture.xml
│ └── Picture
│ └── Picture.png
├── ConfigDumpInfo.xml
├── Configuration.xml
├── DataProcessors
├── ПроверкаКода.xml
├── ПроверкаКода
│ ├── Ext
│ │ └── ObjectModule.bsl
│ ├── Forms
│ │ ├── ФормаУправляемая.xml
│ │ └── ФормаУправляемая
│ │ │ └── Ext
│ │ │ ├── Form.xml
│ │ │ └── Form
│ │ │ ├── Items
│ │ │ └── Требования
│ │ │ │ └── RowsPicture.zip
│ │ │ └── Module.bsl
│ └── Templates
│ │ ├── addon_comment_comment_js.xml
│ │ ├── addon_comment_comment_js
│ │ └── Ext
│ │ │ └── Template.txt
│ │ ├── index.xml
│ │ ├── index
│ │ └── Ext
│ │ │ └── Template.txt
│ │ ├── lib_codemirror_css.xml
│ │ ├── lib_codemirror_css
│ │ └── Ext
│ │ │ └── Template.txt
│ │ ├── lib_codemirror_js.xml
│ │ ├── lib_codemirror_js
│ │ └── Ext
│ │ │ └── Template.txt
│ │ ├── mode_1c_1c_js.xml
│ │ ├── mode_1c_1c_js
│ │ └── Ext
│ │ │ └── Template.txt
│ │ ├── theme_1c_css.xml
│ │ └── theme_1c_css
│ │ └── Ext
│ │ └── Template.txt
├── ЯдроПроверкиКода.xml
└── ЯдроПроверкиКода
│ └── Ext
│ ├── Help.xml
│ ├── Help
│ └── ru.html
│ └── ObjectModule.bsl
├── Enums
└── ТипыОбъектов.xml
├── Ext
├── HomePageWorkArea.xml
└── ManagedApplicationModule.bsl
└── Languages
└── Русский.xml
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Быстрая проверка кода для 1С:АПК
2 |
3 | Расширение для конфигурации 1С:Автоматизированная проверка конфигураций.
4 |
5 | Позволяет проверить произвольный текст кода. Работает в обычном приложении и в управляемом (тонкий и web-клиент). Базу с расширение можно опубликовать, веб-интерфейс выглядит так себе (у конфигурации режим совместимости интерфейса "Версия 8.2"), но если изменить его на "Такси", то будет выглядеть более лучше.
6 | [ Расскраска кода взята отсюда ](https://infostart.ru/public/994455/)
7 |
8 | ## Требования
9 | - Платформа **8.3.10** и выше.
10 | - 1С:Автоматизированная проверка конфигураций, редакция **1.2.5.16**.
11 |
12 | ## Установка
13 | - Создать расширение и загрузить в него конфигурацию из файлов.
14 |
15 | [ Публикация на Инфостарте ](http://infostart.ru/public/1027105/)
16 |
--------------------------------------------------------------------------------
/src/Catalogs/ОбнаруживаемыеОшибки.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 26493b84-dec5-44f4-8929-1aa07a948db0
7 | 43199f68-6a56-4127-81af-d8e7022fd8f1
8 |
9 |
10 | aca7e9ec-3139-48e0-98ac-12ac5f3bf33e
11 | d7ae728f-40ab-4d28-81d4-f6d35a7fa967
12 |
13 |
14 | 61b0a59c-2393-42bf-b1ab-4f0d9f9e8425
15 | 4120752b-32f9-4564-8dac-8e07870d3eb0
16 |
17 |
18 | 644639ee-a0b3-4fee-906b-476519d7cdce
19 | 15c27083-3798-4d65-b4c2-7b0db26367a5
20 |
21 |
22 | 8d659895-8722-4eac-b76f-e51dc7ebf62f
23 | d2dbc544-a975-4b81-9147-41ff4721c340
24 |
25 |
26 |
27 | ОбнаруживаемыеОшибки
28 |
29 | Adopted
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/Catalogs/Правила.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 912f2c03-01c9-4e7e-97a8-0087be4b0d2d
7 | 97867a1c-9495-482c-b040-a55a0289f0a1
8 |
9 |
10 | e02c1abe-83e7-4324-affe-01be222f2475
11 | 2fc5c03b-44a2-4b1f-930f-1b98b327aa20
12 |
13 |
14 | d6fb5300-e167-4521-957f-5e915fe6e5b5
15 | 382bce6f-5846-47c9-a644-7ba8cf7c0f80
16 |
17 |
18 | 83617201-b4ab-4a0f-9c35-1855bfe9ab54
19 | 8f281aa8-2a69-41b8-acb8-9b4048dbbbf9
20 |
21 |
22 | 12847b2f-2c88-44ec-b9a0-8e699d1a7d53
23 | cd72bd42-1d8d-40a0-bd29-d196f5690e39
24 |
25 |
26 |
27 | Правила
28 |
29 | Adopted
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/Catalogs/Требования.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | f57ca2ce-7a0d-4ed9-ad99-902e250e4a67
7 | 746232ca-462b-4377-adc1-1577184f1081
8 |
9 |
10 | b0db9674-3775-4e65-b79e-5ef36954132b
11 | e591ad84-144d-4d9d-b888-b8fa1e01b8eb
12 |
13 |
14 | b720457b-5476-4a5c-b200-440f44c7153c
15 | 6228fd33-633b-46bb-aca2-8f58b90bdd98
16 |
17 |
18 | 3929382e-2a1e-46d8-b73e-7edcbf8d9a4e
19 | c789c705-4355-4f21-b879-d7ff69345fd2
20 |
21 |
22 | 0009f97d-c44d-4398-b15b-a38c86810619
23 | 3a7bf6e3-773e-45b7-a1c0-d9074b84ed9a
24 |
25 |
26 |
27 | Требования
28 |
29 | Adopted
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/CommonModules/бпк_ПроверкаКодаПовтИсп.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | бпк_ПроверкаКодаПовтИсп
6 |
7 |
8 | ru
9 | Бпк проверка кода повт исп
10 |
11 |
12 |
13 | false
14 | false
15 | true
16 | true
17 | false
18 | false
19 | false
20 | DuringRequest
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/CommonModules/бпк_ПроверкаКодаПовтИсп/Ext/Module.bsl:
--------------------------------------------------------------------------------
1 | #Область СлужебныйПрограммныйИнтерфейс
2 |
3 | // Возвращает ссылку на стандарт.
4 | //
5 | // Параметры:
6 | // Ошибка - СправочникСсылка.ОбнаруживаемыеОшибки - Ошибка, описание которой нужно получить.
7 | //
8 | // Возвращаемое значение:
9 | // Строка - Ссылка на стандарт.
10 | //
11 | Функция ПолучитьОписаниеОшибки(Ошибка) Экспорт
12 |
13 | ОписаниеОшибки = Новый Структура("СсылкаНаСтандарт, Требование, ОписаниеТребования");
14 |
15 | Запрос = Новый Запрос;
16 | Запрос.УстановитьПараметр("Ошибка", Ошибка);
17 | Запрос.Текст =
18 | "ВЫБРАТЬ ПЕРВЫЕ 1
19 | | Требования.СсылкаНаСтандарт КАК СсылкаНаСтандарт,
20 | | Требования.Требование КАК Требование,
21 | | Требования.Требование.Представление КАК ОписаниеТребования
22 | |ИЗ
23 | | Справочник.ОбнаруживаемыеОшибки.Требования КАК Требования
24 | |ГДЕ
25 | | Требования.Ссылка = &Ошибка";
26 |
27 | Выборка = Запрос.Выполнить().Выбрать();
28 | Если Выборка.Следующий() Тогда
29 | ЗаполнитьЗначенияСвойств(ОписаниеОшибки, Выборка);
30 | КонецЕсли;
31 |
32 | Возврат ОписаниеОшибки;
33 |
34 | КонецФункции
35 |
36 | #КонецОбласти
--------------------------------------------------------------------------------
/src/CommonModules/бпк_ПроверкаКодаСервер.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | бпк_ПроверкаКодаСервер
6 |
7 |
8 | ru
9 | Бпк проверка кода сервер
10 |
11 |
12 |
13 | false
14 | false
15 | true
16 | true
17 | false
18 | false
19 | false
20 | DontUse
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/CommonModules/бпк_ПроверкаКодаСервер/Ext/Module.bsl:
--------------------------------------------------------------------------------
1 | #Область ПрограммныйИнтерфейс
2 |
3 | // Запускает проверку кода и формирует результат проверки.
4 | //
5 | // Параметры:
6 | // ПараметрыПроверки - Структура - См. ПараметрыПроверки().
7 | // АдресРезультата - Строка - Адрес во временном хранилище, куда будет помещен результат выполнения.
8 | //
9 | Процедура ПроверитьКод(ПараметрыПроверки, АдресРезультата) Экспорт
10 |
11 | ВыполнитьПроверкуКода(ПараметрыПроверки);
12 |
13 | Результат = Новый Структура;
14 | Результат.Вставить("Ошибки", ПараметрыПроверки.Ошибки);
15 | Результат.Вставить("КоличествоОшибок", ПараметрыПроверки.КоличествоОшибок);
16 |
17 | ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
18 |
19 | КонецПроцедуры
20 |
21 | // Функция-конструктор для параметров проверки кода.
22 | //
23 | // Возвращаемое значение:
24 | // Структура - Данные ошибки.
25 | // * ТекстМодуля - Строка - Содержит текст модуля.
26 | // * ТипОбъекта - ПеречислениеСсылка.ТипыОбъектов - Тип объекта метаданных.
27 | // * Свойства - Структура - Свойства объекта.
28 | // * Требования - Массив - Содержит массив требований.
29 | // * СоставМодулей - Массив - Состав модулей.
30 | //
31 | Функция ПараметрыПроверки() Экспорт
32 |
33 | ПараметрыПроверки = Новый Структура;
34 |
35 | СоставМодулей = Новый Массив;
36 | СоставМодулей.Добавить(Перечисления.ИдентификаторыСодержанияОбъектов.Модуль);
37 |
38 | ПараметрыПроверки.Вставить("СоставМодулей", СоставМодулей);
39 | ПараметрыПроверки.Вставить("ТипОбъекта", Перечисления.ТипыОбъектов.ПустаяСсылка());
40 | ПараметрыПроверки.Вставить("Требования", Новый Массив);
41 | ПараметрыПроверки.Вставить("ТекстМодуля", "");
42 | ПараметрыПроверки.Вставить("Свойства", Новый Структура);
43 |
44 | Возврат ПараметрыПроверки;
45 |
46 | КонецФункции
47 |
48 | // Возвращает список типов объектов метаданных для проверки.
49 | //
50 | // Возвращаемое значение:
51 | // СписокЗначений - Список типов объектов.
52 | //
53 | Функция ТипыОбъектовДляПроверки() Экспорт
54 |
55 | Модули = Новый СписокЗначений;
56 |
57 | Модули.Добавить(Перечисления.ТипыОбъектов.Конфигурация, "Модуль обычного приложения");
58 | Модули.Добавить(Перечисления.ТипыОбъектов.Конфигурация, "Модуль управляемого приложения");
59 | Модули.Добавить(Перечисления.ТипыОбъектов.Конфигурация, "Модуль внешнего соединения");
60 | Модули.Добавить(Перечисления.ТипыОбъектов.Конфигурация, "Модуль сеанса");
61 | Модули.Добавить(Перечисления.ТипыОбъектов.ОбщийМодуль, "Общий модуль");
62 | Модули.Добавить(Перечисления.ТипыОбъектов.УправляемаяФорма, "Модуль управляемой формы");
63 | Модули.Добавить(Перечисления.ТипыОбъектов.Форма, "Модуль обычной формы");
64 | Модули.Добавить(Перечисления.ТипыОбъектов.Команда, "Модуль команды");
65 | Модули.Добавить(Перечисления.ТипыОбъектов.Справочник, "Модуль объекта");
66 | Модули.Добавить(Перечисления.ТипыОбъектов.Справочник, "Модуль менеджера");
67 | Модули.Добавить(Перечисления.ТипыОбъектов.РегистрСведений, "Модуль набора записей");
68 |
69 | Возврат Модули;
70 |
71 | КонецФункции
72 |
73 | #КонецОбласти
74 |
75 | #Область СлужебныеПроцедурыИФункции
76 |
77 | // Возвращает коллекцию регистрируемых ошибок.
78 | //
79 | // Параметры:
80 | // Требования - Массив - Требования, по которым необходимо вернуть ошибки.
81 | //
82 | // Возвращаемое значение:
83 | // Соответствие - Соответствие регистрируемых ошибкок.
84 | // * Ключ - СправочникСсылка.ОбнаруживаемыеОшибки.
85 | //
86 | Функция РегистрируемыеОшибки(Требования)
87 |
88 | РегистрируемыеОшибки = Новый Соответствие;
89 |
90 | Запрос = Новый Запрос;
91 | Запрос.УстановитьПараметр("Требования", Требования);
92 | Запрос.Текст =
93 | "ВЫБРАТЬ
94 | | ТребованияРеализацияТребования.ПравилоПроверки КАК ПравилоПроверки
95 | |ПОМЕСТИТЬ ВтПравила
96 | |ИЗ
97 | | Справочник.Требования.РеализацияТребования КАК ТребованияРеализацияТребования
98 | |ГДЕ
99 | | ТребованияРеализацияТребования.Ссылка В(&Требования)
100 | |;
101 | |
102 | |////////////////////////////////////////////////////////////////////////////////
103 | |ВЫБРАТЬ
104 | | ПравилаОбнаруживаемыеОшибки.Ошибка КАК Ошибка
105 | |ИЗ
106 | | ВтПравила КАК ВтПравила
107 | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Правила.ОбнаруживаемыеОшибки КАК ПравилаОбнаруживаемыеОшибки
108 | | ПО ВтПравила.ПравилоПроверки = ПравилаОбнаруживаемыеОшибки.Ссылка";
109 |
110 | Выборка = Запрос.Выполнить().Выбрать();
111 |
112 | Пока Выборка.Следующий() Цикл
113 | РегистрируемыеОшибки.Вставить(Выборка.Ошибка, Истина);
114 | КонецЦикла;
115 |
116 | Возврат РегистрируемыеОшибки;
117 |
118 | КонецФункции
119 |
120 | Процедура ВыполнитьПроверкуКода(Параметры)
121 |
122 | РегистрируемыеОшибки = РегистрируемыеОшибки(Параметры.Требования);
123 |
124 | // Инициализируем ядро для проверки.
125 | Ядро = Обработки.ЯдроПроверкиКода.Создать();
126 | Ядро.УстановитьРегистрациюВТаблицу();
127 | Ядро.УстановитьМаксимальноеКоличествоОшибокОдногоВида(10000);
128 | Ядро.СоответствиеРегистрируемыхОшибок = РегистрируемыеОшибки;
129 | Ядро.Переопределяемый_ЗаполнитьТаблицуИсключенийИзПроверки();
130 |
131 | Ядро.ПараметрыПроверкиКода = Параметры;
132 | Ядро.ЭтоПроверкаКода = Истина;
133 | Ядро.УстановитьКонтекстМодуля();
134 | Ядро.УстановитьКонтекстРасширения(Неопределено);
135 |
136 | Ядро.ПроверитьКод();
137 |
138 | Ядро.ЗавершитьПроверку();
139 | ДанныеОшибок = Ядро.ПолучитьНайденныеОшибки();
140 | СоответствиеПроверенныхОбъектовИПравил = Ядро.СоответствиеПроверенныхОбъектовИПравил;
141 | СоответствиеОшибок = Ядро.ПолучитьСоответствиеОбнаруженныхОшибокИИхКоличества();
142 | Ядро = Неопределено;
143 |
144 | Параметры.Вставить("ОшибкиПоСтрокам", ДанныеОшибок.ОшибкиПоСтрокам);
145 | Параметры.Вставить("КоличествоОшибок", ДанныеОшибок.КоличествоОшибок);
146 | Параметры.Вставить("Ошибки", ДанныеОшибок.Ошибки);
147 |
148 | КонецПроцедуры
149 |
150 | #КонецОбласти
--------------------------------------------------------------------------------
/src/CommonPictures/УровеньКритичностиОшибка.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | УровеньКритичностиОшибка
6 |
7 |
8 | ru
9 | Ошибка
10 |
11 |
12 |
13 | false
14 | false
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/CommonPictures/УровеньКритичностиОшибка/Ext/Picture.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Picture.zip
5 | false
6 |
7 |
--------------------------------------------------------------------------------
/src/CommonPictures/УровеньКритичностиОшибка/Ext/Picture/Picture.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bazil1c/acc-check-code/b065882bafbb28ff1dc6404f42b5234c41c81905/src/CommonPictures/УровеньКритичностиОшибка/Ext/Picture/Picture.zip
--------------------------------------------------------------------------------
/src/CommonPictures/УровеньКритичностиРекомендация.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | УровеньКритичностиРекомендация
6 |
7 |
8 | ru
9 | Уровень критичности рекомендация
10 |
11 |
12 |
13 | false
14 | false
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/CommonPictures/УровеньКритичностиРекомендация/Ext/Picture.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Picture.png
5 | false
6 |
7 |
--------------------------------------------------------------------------------
/src/CommonPictures/УровеньКритичностиРекомендация/Ext/Picture/Picture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bazil1c/acc-check-code/b065882bafbb28ff1dc6404f42b5234c41c81905/src/CommonPictures/УровеньКритичностиРекомендация/Ext/Picture/Picture.png
--------------------------------------------------------------------------------
/src/CommonPictures/бпк_ИТС.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | бпк_ИТС
6 |
7 |
8 | ru
9 | ИТС
10 |
11 |
12 |
13 | false
14 | false
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/CommonPictures/бпк_ИТС/Ext/Picture.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Picture.png
5 | false
6 |
7 |
--------------------------------------------------------------------------------
/src/CommonPictures/бпк_ИТС/Ext/Picture/Picture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bazil1c/acc-check-code/b065882bafbb28ff1dc6404f42b5234c41c81905/src/CommonPictures/бпк_ИТС/Ext/Picture/Picture.png
--------------------------------------------------------------------------------
/src/ConfigDumpInfo.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/src/Configuration.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 9cd510cd-abfc-11d4-9434-004095e12fc7
7 | a6f3ed97-0608-44ff-b030-aabef2ce169f
8 |
9 |
10 | 9fcd25a0-4822-11d4-9414-008048da11f9
11 | 487647dc-6827-4ee1-be2b-3ccfc24a41f9
12 |
13 |
14 | e3687481-0a87-462c-a166-9f34594f9bba
15 | e8142caa-f606-4e08-a456-e1cf58318478
16 |
17 |
18 | 9de14907-ec23-4a07-96f0-85521cb6b53b
19 | 3af897b2-b9b2-4469-aa92-e5df4d892703
20 |
21 |
22 | 51f2d5d8-ea4d-4064-8892-82951750031e
23 | cdf0b382-e557-460e-bfce-e4122a96d0f3
24 |
25 |
26 | e68182ea-4237-4383-967f-90c1e3370bc7
27 | d030b940-b042-4072-94ee-b801bebef27c
28 |
29 |
30 |
31 | БыстраяПроверкаКода
32 |
33 |
34 | ru
35 | Быстрая проверка кода
36 |
37 |
38 |
39 | Customization
40 | Adopted
41 | true
42 | бпк_
43 | Version8_3_10
44 |
45 | PlatformApplication
46 |
47 | Russian
48 | Ипатов Николай
49 | 1.2.5.16
50 |
51 |
52 |
53 |
54 | ru
55 | Ипатов Николай
56 |
57 |
58 |
59 |
60 |
61 |
62 | Русский
63 | УровеньКритичностиРекомендация
64 | УровеньКритичностиОшибка
65 | бпк_ИТС
66 | бпк_ПроверкаКодаСервер
67 | бпк_ПроверкаКодаПовтИсп
68 | Требования
69 | ОбнаруживаемыеОшибки
70 | Правила
71 | ТипыОбъектов
72 | ЯдроПроверкиКода
73 | ПроверкаКода
74 |
75 |
76 |
--------------------------------------------------------------------------------
/src/DataProcessors/ПроверкаКода.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 41b79969-354a-42ed-9909-29daa5b6311a
7 | f3e77aa8-c228-4159-8a5a-7651327f821a
8 |
9 |
10 | 84a0dbce-e090-47b9-ac47-02bd8e35f1b7
11 | edd6945e-345f-43d7-af04-23f1d526b901
12 |
13 |
14 |
15 | ПроверкаКода
16 |
17 |
18 | ru
19 | Проверка кода
20 |
21 |
22 |
23 | false
24 | DataProcessor.ПроверкаКода.Form.ФормаУправляемая
25 | DataProcessor.ПроверкаКода.Form.ФормаУправляемая
26 | false
27 |
28 |
29 |
30 |
31 |
32 | index
33 | lib_codemirror_js
34 | lib_codemirror_css
35 | mode_1c_1c_js
36 | theme_1c_css
37 | addon_comment_comment_js
38 |
39 |
40 |
--------------------------------------------------------------------------------
/src/DataProcessors/ПроверкаКода/Ext/ObjectModule.bsl:
--------------------------------------------------------------------------------
1 |
2 | #Область ПрограммныйИнтерфейс
3 |
4 | // Возвращает таблицу блоков переданного типа модуля объекта конфигурации.
5 | // Если проверяемый объект не имеет указанного типа модуля, то возвращается "Неопределено".
6 | //
7 | // Параметры:
8 | // ИмяМодуля - ПеречислениеСсылка.ИдентификаторыСодержанияОбъектов - тип модуля объекта.
9 | // ОбъектКонфигурации - СправочникСсылка.СтруктураКонфигурации, Неопределено - ссылка на объект.
10 | // Если не заполнен, то возвращается текст модуля текущего проверяемого объекта.
11 | //
12 | // Возвращаемое значение:
13 | // Неопределено, ТаблицаЗначений - таблица блоков модуля объекта с колонками:
14 | // Блок - ПеречислениеСсылка.ТипыБлоковМодулей - тип блока модуля.
15 | // НачальнаяСтрока - Число - номер строки начала блока.
16 | // КонечнаяСтрока - Число - номер строки окончания блока.
17 | // ЕстьКомментарий - Булево - флаг наличия комментария в блоке.
18 | // ЕстьЭкспорт - Булево - флаг наличия экспорта в блоке,
19 | // актуально для заголовков процедур и функций.
20 | // Текст - Строка - многострочный текст блока.
21 | //
22 | Функция ПолучитьТаблицуБлоковМодуля(Знач ТекстМодуля) Экспорт
23 |
24 | ТипыБлоков = Перечисления.ТипыБлоковМодулей;
25 |
26 | ТаблицаБлоков = Новый ТаблицаЗначений;
27 | ТаблицаБлоков.Колонки.Добавить("Блок");
28 | ТаблицаБлоков.Колонки.Добавить("НачальнаяСтрока");
29 | ТаблицаБлоков.Колонки.Добавить("КонечнаяСтрока");
30 | ТаблицаБлоков.Колонки.Добавить("ЕстьКомментарий");
31 | ТаблицаБлоков.Колонки.Добавить("ЕстьЭкспорт");
32 | ТаблицаБлоков.Колонки.Добавить("ДирективаКомпиляции");
33 | ТаблицаБлоков.Колонки.Добавить("Текст");
34 |
35 | Текст = Новый ТекстовыйДокумент;
36 | Текст.УстановитьТекст(ТекстМодуля);
37 | ВсегоСтрокМодуля = Текст.КоличествоСтрок();
38 |
39 | // Разбиваем текст модуля на блоки.
40 | ТекущийБлок = Неопределено;
41 | НачальнаяСтрока = 1;
42 | КонечнаяСтрока = 1;
43 | ЭтоКонецБлока = Истина;
44 | ЕстьЭкспорт = Неопределено;
45 | ЕстьКомментарий = Ложь;
46 | ДирективаКомпиляции = "";
47 |
48 | Для НомерСтроки = 1 По ВсегоСтрокМодуля Цикл
49 |
50 | СтрокаМодуляИсходная = Текст.ПолучитьСтроку(НомерСтроки);
51 | СтрокаМодуля = СокрЛП(СтрокаМодуляИсходная);
52 | СтрокаМодуля = ВРег(СтрокаМодуля);
53 |
54 | // Встретился случай неправильного определения процедуры:
55 | // ПроцедураПроверки = Обработчик.ПроцедураПроверки;
56 | // Замена происходит для правильного определения блока, в функцию СтрНачинаетсяС() добавлены пробелы в строку поиска.
57 |
58 | // Для случаев "КонецФункции" и "КонецПроцедуры" пробелы не добавляем.
59 | // Встретился случай неправильного определения окончания функции:
60 | // КонецФункции// СформироватьЗапросПроверкиПриСменеСтатуса();
61 |
62 | СтрокаМодуля = СтрЗаменить(СтрокаМодуля, Символы.Таб, " ") + " ";
63 |
64 | Если НЕ ЭтоКонецБлока Тогда
65 | НовыйБлок = ТекущийБлок;
66 | Если НовыйБлок = ТипыБлоков.ОписаниеПеременной Тогда
67 | ЭтоКонецБлока = (СтрНайти(СтрокаМодуля, ";") > 0);
68 | ИначеЕсли НовыйБлок = ТипыБлоков.ЗаголовокПроцедуры
69 | ИЛИ НовыйБлок = ТипыБлоков.ЗаголовокФункции Тогда
70 |
71 | ПозицияСкобки = (СтрНайти(СтрокаМодуля, ")") > 0);
72 | ЭтоКонецБлока = (ПозицияСкобки > 0);
73 | ЕстьЭкспорт = Ложь;
74 | Если ЭтоКонецБлока Тогда
75 | ПозицияКомментария = СтрНайти(СтрокаМодуля, "//", , ПозицияСкобки);
76 | Если ПозицияКомментария > 0 Тогда
77 | СтрокаМодуля = СокрП(Лев(СтрокаМодуля, ПозицияКомментария - 1));
78 | КонецЕсли;
79 | ЕстьЭкспорт = (СтрНайти(СтрокаМодуля, "ЭКСПОРТ", , ПозицияСкобки) > 0);
80 | КонецЕсли;
81 | Иначе
82 | ЭтоКонецБлока = Истина;
83 | КонецЕсли;
84 | ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "//") Тогда
85 | НовыйБлок = ТипыБлоков.Комментарий;
86 | ЭтоКонецБлока = Истина;
87 | ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "ПЕРЕМ ") Тогда
88 | НовыйБлок = ТипыБлоков.ОписаниеПеременной;
89 | ЭтоКонецБлока = (СтрНайти(СтрокаМодуля, ";") > 0);
90 | ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "ПРОЦЕДУРА ") Тогда
91 | НовыйБлок = ТипыБлоков.ЗаголовокПроцедуры;
92 | ЕстьЭкспорт = Ложь;
93 |
94 | ПозицияСкобки = СтрНайти(СтрокаМодуля, ")");
95 | ЭтоКонецБлока = ПозицияСкобки > 0;
96 | Если ЭтоКонецБлока Тогда
97 | ПозицияКомментария = СтрНайти(СтрокаМодуля, "//", , ПозицияСкобки);
98 | Если ПозицияКомментария > 0 Тогда
99 | СтрокаМодуля = СокрП(Лев(СтрокаМодуля, ПозицияКомментария - 1));
100 | КонецЕсли;
101 | ЕстьЭкспорт = СтрНайти(СтрокаМодуля, "ЭКСПОРТ", , ПозицияСкобки) > 0;
102 | КонецЕсли;
103 | ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "КОНЕЦПРОЦЕДУРЫ") Тогда // пробел не добавляем (см. выше)
104 | НовыйБлок = ТипыБлоков.ОкончаниеПроцедуры;
105 | ЭтоКонецБлока = Истина;
106 | ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "ФУНКЦИЯ ") Тогда
107 | НовыйБлок = ТипыБлоков.ЗаголовокФункции;
108 | ЕстьЭкспорт = Ложь;
109 |
110 | ПозицияСкобки = СтрНайти(СтрокаМодуля, ")");
111 | ЭтоКонецБлока = ПозицияСкобки > 0;
112 | Если ЭтоКонецБлока Тогда
113 | ПозицияКомментария = СтрНайти(СтрокаМодуля, "//", , ПозицияСкобки);
114 | Если ПозицияКомментария > 0 Тогда
115 | СтрокаМодуля = СокрП(Лев(СтрокаМодуля, ПозицияКомментария - 1));
116 | КонецЕсли;
117 | ЕстьЭкспорт = (СтрНайти(СтрокаМодуля, "ЭКСПОРТ", , ПозицияСкобки) > 0);
118 | КонецЕсли;
119 | ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "КОНЕЦФУНКЦИИ") Тогда // пробел не добавляем (см. выше)
120 | НовыйБлок = ТипыБлоков.ОкончаниеФункции;
121 | ЭтоКонецБлока = Истина;
122 | Иначе
123 | НовыйБлок = ТипыБлоков.Операторы;
124 | ЭтоКонецБлока = Истина;
125 |
126 | Если СтрНачинаетсяС(СтрокаМодуля, "&") Тогда
127 | ДирективаКомпиляции = СтрокаМодуляИсходная;
128 | КонецЕсли;
129 | КонецЕсли;
130 |
131 | Если НовыйБлок = ТекущийБлок Тогда
132 | ЕстьКомментарий = (ЕстьКомментарий ИЛИ (СтрНайти(СтрокаМодуля, "//") > 0));
133 | КонечнаяСтрока = КонечнаяСтрока + 1;
134 | Иначе
135 |
136 | Если ЗначениеЗаполнено(ТекущийБлок) Тогда
137 |
138 | НоваяЗаписьОБлоке = ТаблицаБлоков.Добавить();
139 | НоваяЗаписьОБлоке.Блок = ТекущийБлок;
140 | НоваяЗаписьОБлоке.ЕстьКомментарий = ЕстьКомментарий;
141 | НоваяЗаписьОБлоке.НачальнаяСтрока = НачальнаяСтрока;
142 | НоваяЗаписьОБлоке.КонечнаяСтрока = КонечнаяСтрока;
143 |
144 | ЭтоМетод = (ТекущийБлок = ТипыБлоков.ЗаголовокПроцедуры) ИЛИ (ТекущийБлок = ТипыБлоков.ЗаголовокФункции);
145 | Если ЭтоМетод Тогда
146 | НоваяЗаписьОБлоке.ЕстьЭкспорт = ЕстьЭкспорт;
147 | КонецЕсли;
148 |
149 | ЭтоПеременная = (ТекущийБлок = ТипыБлоков.ОписаниеПеременной);
150 | Если ЭтоМетод ИЛИ ЭтоПеременная Тогда
151 | НоваяЗаписьОБлоке.ДирективаКомпиляции = ДирективаКомпиляции;
152 | ДирективаКомпиляции = "";
153 | КонецЕсли;
154 |
155 | КонецЕсли;
156 |
157 | НачальнаяСтрока = НомерСтроки;
158 | КонечнаяСтрока = НомерСтроки;
159 | ТекущийБлок = НовыйБлок;
160 | ЕстьКомментарий = (СтрНайти(СтрокаМодуляИсходная, "//") > 0);
161 |
162 | КонецЕсли;
163 |
164 | Если НомерСтроки = ВсегоСтрокМодуля Тогда
165 |
166 | НоваяЗаписьОБлоке = ТаблицаБлоков.Добавить();
167 | НоваяЗаписьОБлоке.Блок = ТекущийБлок;
168 | НоваяЗаписьОБлоке.ЕстьКомментарий = ЕстьКомментарий;
169 | НоваяЗаписьОБлоке.НачальнаяСтрока = НачальнаяСтрока;
170 | НоваяЗаписьОБлоке.КонечнаяСтрока = КонечнаяСтрока;
171 |
172 | ЭтоМетод = (ТекущийБлок = ТипыБлоков.ЗаголовокПроцедуры) ИЛИ (ТекущийБлок = ТипыБлоков.ЗаголовокФункции);
173 | Если ЭтоМетод Тогда
174 | НоваяЗаписьОБлоке.ЕстьЭкспорт = ЕстьЭкспорт;
175 | КонецЕсли;
176 |
177 | ЭтоПеременная = (ТекущийБлок = ТипыБлоков.ОписаниеПеременной);
178 | Если ЭтоМетод ИЛИ ЭтоПеременная Тогда
179 | НоваяЗаписьОБлоке.ДирективаКомпиляции = ДирективаКомпиляции;
180 | ДирективаКомпиляции = "";
181 | КонецЕсли;
182 |
183 | КонецЕсли;
184 |
185 | КонецЦикла;
186 |
187 | // Заполняем структуру модуля текстом.
188 | РазборТекста = Новый ТекстовыйДокумент;
189 | РазборТекста.УстановитьТекст(ТекстМодуля);
190 |
191 | Для Каждого СтрокаБлока Из ТаблицаБлоков Цикл
192 |
193 | ТекстБлока = Новый ТекстовыйДокумент;
194 |
195 | Для Счетчик = СтрокаБлока.НачальнаяСтрока По СтрокаБлока.КонечнаяСтрока Цикл
196 | ТекстБлока.ДобавитьСтроку(РазборТекста.ПолучитьСтроку(Счетчик));
197 | КонецЦикла;
198 |
199 | СтрокаБлока.Текст = ТекстБлока.ПолучитьТекст();
200 |
201 | КонецЦикла;
202 |
203 | Возврат ТаблицаБлоков;
204 |
205 | КонецФункции
206 |
207 | #КонецОбласти
--------------------------------------------------------------------------------
/src/DataProcessors/ПроверкаКода/Forms/ФормаУправляемая.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/DataProcessors/ПроверкаКода/Forms/ФормаУправляемая/Ext/Form.xml:
--------------------------------------------------------------------------------
1 |
2 |
Данная обработка является технологической и не предназначена для работы пользователя. В контексте обработки "Ядро" выполняется проверка объектов конфигурации.