Рад представить новую версию Code Inspector. Воспользоваться новыми возможностями и проверить свои модули можно уже сейчас, бесплатно в онлайн-режиме.
Что нового?
Заново переписаны компилятор и анализатор кода.
Добавлен статический анализ (Cтатический анализ кода — анализ программного обеспечения, производимый без реального выполнения исследуемых программ. Wikipedia).
Список проверок расширился и теперь включает в себя:
- Локальная процедура или функция нигде не используется
- Переменная или параметр нигде не используется
- Не все части функции возвращают значение
- Переменной было присвоено значение, но оно нигде не используется
- Значение переменной Неопределено
- Обнаружен недостижимый участок кода
- Условие всегда Истина
- Условие всегда Ложь
- Функция всегда возвращает одно и тоже значение
где:
M = цикломатическая сложность,
E = количество рёбер (переходов между блоками программы) в графе,
N = количество узлов (блоков программы) в графе,
P = количество компонент связности (количество выходов из блоков)
Условно принимается, что значение сложности
1-9 — низкая сложность (легко понимать, изменять и тестировать такой код)
10-19 — средняя сложность. Внесение изменений в такой модуль может вызывать затруднения.
Выше 20 — высокая сложность. Сложно понимать и обслуживать такой код. Рекомендуется произвести рефакторинг и упростить программу.
При значении M >= 20 будет выдано предупреждение о высокой сложности метода.
Установка
Для работы, приложению необходим .NET Framework 3.5 Client Profile. Если он еще не установлен в системе, скачать можно с сайта Microsoft http://www.microsoft.com/ru-ru/download/details.aspx?id=22
Поддерживаются все релизы платформы 1С 8.2 и 8.3.
Сама программа установки не требует.
Использование
Для работы скачайте программу-клиент.
В стартовом окне программы выполните вход в систему.
Откройте необходимый модуль и нажмите Ctrl+I. После выполнения анализа, прямо в Конфигураторе в окне сообщений, будут показаны результаты проверки. Кликнув на предупреждение в списке или нажав Enter произойдет переход к соответствующему участку кода.
Есть возможность фильтрации предупреждений по типам.
Проверьте свой код и, возможно, найдете кое-что интересное!
Здесь будет FAQ.
лицензия для индивидуальных разработчиков: она только на один компьютер или можно поставить, например, на домашний комп и ещё на рабочий?
(2) TrinitronOTV,
может использоваться на любой машине, но только Вами. Лицензия недоступна для организаций, а также не может быть использована одновременно в нескольких терминальных сессиях на одном сервере. Предусмотрена безопасная активация на один сеанс работы или удаление данных ключа лицензии, при использовании на чужих компьютерах.
Ох уж мне эти маркетологи со своими девятками 🙂
(4) davdykin, девятки — наше всё 🙂
Контекст каждого модуля собираешь полностью?
(6) tormozit, по возможности да, но пока не на 100%
ложные срабатывания могут быть, но на моей практике и судя по отзывам пользователей их совсем немного
планирую еще добавить функцию Suppress, когда можно будет добавлять в исключения ложное срабатывание в определенном модуле. Ну и дальше увеличивать точность определения.
Классная штука для рефакторинга…
Но есть вопрос.
Хорошо, когда инспектор сообщает «Ошибок не обнаружено».
Но хотелось бы иметь полное описание всех потенциальных ошибок, которые может обнаруживать инспектор.
А то не совсем ясно, от каких ошибок свободен модуль после ревизии.
А вообще идея бомбовая… еще бы структуру объектов/модулей/форм/процедур/функций выгружать в виде дерева.
Хотя бы в эксель. Чтобы можно было плюсиками разворачивать дерево по веткам.
Контексты модулей форм строятся с учетом их реквизитов, в т.ч. основного?
(9) tormozit, в процессе проверки получаются все реквизиты формы и объекта. Получение основного реквизита будет добавлено позже, пока вместо этого используются другие методы построения контекста модулей форм.
(8) Evgen.Ponomarenko, спасибо за отзыв!
По поводу «Ошибок не обнаружено».
Это как в юнит тестах. Если тесты говорят что все ОК – это еще не значит что ошибок нет. Но если тесты предупреждают что есть ошибка – скорее всего ошибка есть и нужно проверять. Так и здесь.
Самыми распространенными ошибками, которые обнаруживает Code Inspector являются:
По выгрузке структуры модулей.
Планируется, со временем, добавление разных новых возможностей, возможно будет и эта 🙂
like
(3), Аактивация … <- исправьте слово .
(13) Sitex, спасибо 🙂
Будем надеяться что у 1С появится такое в стоке
Этот тот инспектор, который раньше был в ТурбоКонфе? Подтверждаю, штука действительно классная!
(16) Evil Beaver, спасибо
он, только улучшенный, с новым механизмом интеграции с Конфигуратором.
(16), (17) он ,кстати, в состав TurboConf Ultimate по прежнему входит. Только там еще не обновился.
(18) Михаил, а ты не пробовал предложить свои наработки (или самого себя) фирме 1С?
(11)
До меня только, что дошло!
Я думаю, если вы запостите все тексты ошибок, которые сообщает инспектор — это и будет лучшим ответом на мой вопрос.
(19) Evil Beaver, не, как-то даже не думал об этом 🙂
(20) Evgen.Ponomarenko, вот группы ошибок на текущий день
«{{{1}}}: переменной ‘{0}’ присвоено значение, но оно никогда не используется»
«{{{1}}}: возможно Неопределено значение переменной ‘{0}'»
«{{{1}}}: переменная ‘{0}’ объявлена, но никогда не используется»
«{{{1}}}: параметр ‘{0}’ никогда не используется»
«Локальная функция ‘{0}’ никогда не используется»
«‘{0}’ Не все части функции возвращают значение»
(21) ну а что такого.. вот сюда, например, можно посмотреть.
http://www.1c.ru/rus/firm1c/vacan/development.jsp
1. Было бы хорошо получать статитику по подсистемам в следующих разрезах:
Сообщения:
Предупреждения(Warnings)
Ошибки (Errors)
Фатальные ошибки (Fatal errors)
Статистика:
Средняя вложенность условий (Average nesting conditions)
Средняя вложенность функций (Average nesting function)
Количество операторов (Total operators)
Это позволило бы сформировать комплексную оценку кода по формальным признакам.
2. Было бы хорошо добавить три предупреждения:
1. Большая вложенность условий (средняя>1)
2. Большая вложенность функций (средняя>2)
3. Оператор ИЛИ в условиях
3. Было бы хорошо добавить две ошибки:
1. Слишком большая вложенность условий (максимальная>2)
2. Слишком большая вложенность функций (максимальная>3)
(22) Настройка параметров проверки будет?
Очень бы неплохо вставлять свои варианты проверки.
Ну и конечно расширять штатные 🙂
(24) Evgen.Ponomarenko, интересное предложение, спасибо, учту
(25) СергейКа, мне уже писали в ЛС с пожеланием добавить API. И тогда пользователи смогут добавлять свои проверки, построения графов и т.д. Мне нужно время — повнимательней изучить этот вариант.
По поводу параметров проверки — сейчас уже есть возможность настройки вывода групп ошибок, они сохраняются при следующем вызове.
Помогите пожалуйста, не смогла запустить — подскажите, какую настройку сделать?
При запуске выдает «Не удалось получить лицензию. Proxy Authenrication Required»
Уточните, какой порт используется
(28) ponaroshku, вроде исправлял такую ошибку
попробуйте в папку с программой положить этот конфиг файл и запустить программу
https://dl.dropboxusercontent.com/u/74168919/Code%20Inspector.exe.config
(28) ponaroshku, порт 443 https
(30) ура:) Спасибо большое, заработало!
(27) Еще немного 🙂
Для организаций будет интересней следующий функционал:
1. Возможность проверки извне или пакетно, с указанием проверяемых модулей.
2. Формирование отчетов по ошибкам, возможность их сравнения для проверки исправлений ранее найденных ошибок.
(32) СергейКа, спасибо, подумаю над этим.
Что говорит инспектор на код УТ11, например? — много косяков..?
А так — несомненный огромный плюс автору.
Как только сяду на 8-ку — сразу же куплю!!
Добрый день
При запуске выдает :
«Не удалось получить лицензию. Сервер нарушил протокол. Section=ResponseStatusLine»
.NET Framework 3.5 Client Profile скачал при запуске файла «dotnetfx35setup.exe» диалоговых окон нет
Win 7 x64 во включении и отключении компонент «.NET Framework 3.5» включена.
Как запустить инспектора ?
(35) Дмитрий Рудаков, Вы через прокси-сервер выходите в интернет?
(34) CheBurator, УТ не проверял. Другие типовые пробовал проверять — да есть ошибки. Встречались также опечатки в именах переменных. В основном много неиспользуемых значений переменных и параметров. Ну и функции, не всегда возвращающие значения тоже встречаются.
(35) Дмитрий Рудаков, попробуйте положить в папку с программой этот файл
(36) да через прокси
«С ростом функционала будет расти и цена. Самое время для выгодной покупки!»
Но не сказано, что будет расти цена на НОВЫЕ версии.
«Один год поддержки и обновлений»
Каждый год покупать? Зарегистрированным пользователям скидки не будет? Тогда вообще сейчас нет смысла покупать, а подождать, когда функционал будет увеличен (API, пакетный режим работы и т.д.), чтоб не вкладывать два раза в один и тот же продукт.
А вообще — подумайте над отдельной лицензией на продление, как у Касперского — существенно дешевле, чем приобретение новой лицензии.
(40) rus128, в течение года можно бесплатно получать все обновления текущей версии программы, а также все апгрейды до новых основных версий.
После этого периода, предусмотрено продление поддержки со скидкой минимум 40%.
(40) (41) убрал это сообщение, что бы не было неправильного истолкования. А информацию о продлении со скидкой добавлю в публикацию.
А что станет с Инспектором по истечении года, если не продлевать лицензию? Просто не обновится или работать перестанет?
(43) ShantinTD, продолжит работать, но без обновлений.
Вот если бы код был открытым, то действительно купил бы, а так…
+(45)
>Code Inspector (лицензия для индивидуальных разработчиков) 1 990,00 руб.
Мало функционала для такой цены!!!
Из чего данная цена складывается?
Например годовая лицензия на «MS Office 365 для
(46) GoodBeaver,
ИМХО
Сколько вы потратите время на написание такой обработки с вашим опытом? Точно не менее 2-х часов. И что на выходе? Копируете текст, переходите в предприятие, открываете обработку, вставляете текст — выполнить.
Но самое интересное — как вы получите список реквизитов объекта и формы контекста?
Более того, функционал инспектора не ограничен только 3-я пунктами. Нора намного глубже, чем кажется на первый взгляд.
Тем более что обработкой вы не получите никакой интеграции, тем более такой.
Что касается цены — Офис — продукт массового потребления. могут себе позволить демпинг.
Эта разработка является коммерческой большими с планами по развитию со всеми вытекающими. Посмотрите цены на инфостарте. минимум 100р. и это то что вы сможете как раз часа за 4 сделать.
Сори, если мой коммент прозвучал резко.
Объявление
Завтра готовится выход новой версии, содержащей довольно много исправлений. В программе предусмотрена автоматическая проверка обновлений, так что те у кого она включена — о выходе узнают. Обновление очень рекомендовано к скачиванию, особенно для тех, кто использует системы с включенным UAC, а так же по какой-то причине имел проблемы с активацией через сервер лицензий.
(47) MarSeN, в добавок (46) GoodBeaver,
В данном случае покупка данного продукта — это отражение вашей уверенности в будущем проекта,
как следствие вы поддерживаете автора материально.
А МС офис (2003) вообще должен продаваться по цене памперсов, уже сто раз окупился.
Как по мне МС офис (2007 и 2013) утопия — и рубля жалко. Так, что сравнение не уместное.
А вот автора поддержать нужно, те более, что в этой разработке вагон опыта и море человеко часов.
(49) Evgen.Ponomarenko,
Поставил бы плюс за данный коммент, если бы он потом не появился в важныж (.
(50) MarSeN,
не уловил смысл сообщения )))
(51) Evgen.Ponomarenko,
я передумал… )
Вышла новая версия 1.0.5129.32197
Добавлен конфигурационный файл, для возможности работы программы через прокси-сервер
Добавлена возможность ручного получения лицензии через браузер, при невозможности автоматического получения по какой-либо причине
Исправлена неправильная работа уведомлений о наличии новых версий.
Исправлена ошибка, приводившая к замене содержимого буфера обмена, при навигации по предупреждениям.
Исправлена ошибка, когда программе не удавалось дождаться появления окна Служебных сообщений, при включенном UAC.
Исправлена ошибка, приводившая к блокировке клавиатуры и мыши, в режиме с включенным UAC.
Исправлена ошибка, когда программа переставала работать при многократном вызове Инспектора в одном и том же модуле, при включенном UAC
Исправлена работа навигации по предупреждениям, при включенном UAC.
Внесены разные мелкие исправления.
Что-то зависания жесткие получались, посмотри после обновления исправилось ли, имею ввиду:
«Исправлена ошибка, приводившая к блокировке клавиатуры и мыши, в режиме с включенным UAC. »
Очень не приятная ошибка.
(54) zoytsa, да этот баг был исправлен. А так же, для других подобных случаев была улучшена система аварийной разблокировки через 30 секунд. Все это уже есть в текущем релизе.
На всякий случай, если что-то подобное еще всплывет, то можно нажать NumLock пару раз и клавиатура разблокируется.
Хорошая разработка.
Но ИМХО все-таки цена великовата для не слишком большого функционала.
Подожду с покупкой, пока функционал подрастет.
Вложил 10см н апродвижение
(57) CheBurator, спасибо!
А я думаю, кто продвинул публикацию 🙂
(58) думаешь, я просто так продвинул? Ничего подобного — будешь должен! 😉
(59) CheBurator, ладно скидка в 10$m на программу считай твоя 🙂
(46) GoodBeaver, есть очень интересный прием, для тех, кто «купил бы, если»
Им предлагают купить за цену, которую они считают справедливой, для такого продукта в текущем его виде.
Обычно либо идет ответ: «цена — 1 рубль (копейка), покупаю», либо собеседник теряется из виду.
Ну и вдогонку теме цен:
Начальники, ну когда, ёмоё, минимальная цена на инфостарте снизится до хотя бы 100 рублей??? Ведь это реальный стимул для авторов продавать чаще, а для покупателей — не прижимать деньги из-за высоковатой цены. Сегментирование рынка же! А инфостарту никто не запрещает брать комиссию с продаж.
(62) Evil Beaver,
+++
(60) ээээ! ты неправильный бизнесмен — вложенные инвестиции должны окупиться многократно! 😉
(64) CheBurator, должны, но очень часто инвестор не получает ничего 🙂
инвестировать что-ли в твои разработки 11$m…
Вышла версия 1.1.5140.17883
Добавлена новая проверка «Обнаружен недостижимый участок кода».
Добавлена поддержка получения измерений и ресурсов для форм регистров.
Исправлена ошибка с сохранением настроек фильтрации.
Исправлена ошибка в проверке функции на возврат значения.
Внесены мелкие исправления.
Мне вот интересно, как это все получается — чисто научно — например «получен недостижимый участок кода»…?
строишь AST и смотришь — на указаный узел хоть как-то передается управление или нет ?
и кстати — в 1С нормально не будет все равно никогда работать, потому что выяснить результат чаще всего нельзя не проведя интерпретацию кода, например
если выполнить(«1 = 2») тогда
//// тут очень много кода, но любой анализатор скажет что код используется.
конецесли;
Интересно…
Вышла версия 1.2.5150.27244
Code Inspector теперь использует API TurboConf 3, с новой системой взаимодействия с Конфигуратором.
Добавлена полная поддержка систем с включенным UAC.
Добавлен выбор режима отображения окна Инспектора — встроенное в окне Служебных сообщений или отдельное окно.
Если результаты проверки Code Inspector выводятся в отдельное окно, то это окно можно перемещать и закреплять на экране.
Изменена форма автоматического выбора режима работы программы.
В Code Inspector, при определении неиспользуемых значений переменных и параметров, добавлен анализ строк внутри операторов Выполнить и Вычислить.
Вопрос: можно ли использовать Code Inspector (да и TurboConf) совместно со снегопатом?
(71) DrAku1a, я не пробовал, но теоретически должно работать.
А данный инструмент смотрит используется ли функция или процедура модуля во внешних обработках, которые зарегистрированы в конфигурации?
(73) alex15650, такая функция есть в штатных средствах проверки конфигурации
Вообщем мне «лично» все нравится, но подожду дальнейшего развития.
Неплохо бы добавить возможность проверки сразу ВСЕЙ конфигурации, а не только текущего модуля. Тем более, я думаю, чисто технически это не сложно сделать. Можно конфигурацию в файлы выгрузить для этого, например.
(76) в какие» файлы» вы выгрузите модуль Объекта? Если это не 8.3?
(77) AlexO, не проблема для теста открыть нужную конфигурацию в 8.3 и оттуда уже выгрузить. Я это имел ввиду. Раз в месяц проверить ВСЮ конфигурацию таким образом совершенно не проблематично.
А для семерки коде-инспектора нет случаем? ))
1.Почему нельзя копировать текст ошибки?
2.Через какое-то время «Ctrl+I» не срабатывает. Попробовал выйти и запустить ее, все ок.
3.Не хватает номеров строк с ошибками. Желательно их укажите.
(80) ZhokhovM, спасибо за отзыв
http://infostart.ru/public/180406/ . Там выходит много исправлений и улучшений для CodeInspector.
1. Вроде не сталкивался с такой необходимостью, но если очень нужно, то можно будет добавить
2. Попробуйте использовать TurboConf Ultimate
3. Подумаю над добавлением этой возможности
4.Не может определить тексты модуля находящиеся на стыке инструкций препроцессоров #Область ИмяОбласти и #КонецОбласти. Заменил их комментариями типа // ИмяОбласти и // в отдельном блокноте, все ок. Очень смущает когда я делаю так.
Да, очень нужно.
да, что то типа такого {333,12}: …
(78) gubanoff, еще бы искать по префиксу, а не только всю конфигурацию.
Мне только нужно ошибки искать, остальное средствами 1с.
(82) ZhokhovM, это и многое другое было исправлено в TurboConf
(85) ZhokhovM, на данный момент, все доработки и исправления для Инспектора выходят только в составе TurboConf. Если Вам нужны только функции Code Inspector и надумаете покупать, могу добавить в TurboConf отдельную лицензию, только для инспектирования.
(87) ясно.
Скажите, а куда делся TurboConf?
Страница не найдена. Что случилось с программой, вы ее больше не поддерживаете?
(89) Tavalik, конечно поддерживаю 🙂
просто временно отключена публикация
Интересная разработка )
(91) adhocprog, спасибо 🙂
(0) вот если бы это было вот такhttps://codeclimate.com/pricing — мы были готовы и купить и подключить к своим open source проектам.
В текущем варианте использования применимость пока неявная — и как вы будете с Graphit’ом работать тоже неясно.
P.S. Это я не в порядке критики, а в порядке «поделиться» вариантами использования для Ваших потенциальных клиентов
(93) lustin, спасибо за отзыв
Этот инструмент больше как проверка Resharper’a, а не как CodeClimate или PVS-Studio и т.д. Т.е. проверка непосредственно в процессе разработки.
Если такая необходимость возникнет, с Графитом думаю будет легче подружиться, чем с закрытым Конфигуратором.
Вообще я конечно подумаю и над Вашим вариантом.
Если будет спрос на мой проект Инспектора, как отдельного приложения или сервиса, я хочу добавить проверку cf файлов. Много наработок для этого у меня уже есть. Так что кому интересно, пожалуйста сообщите.
(93)+1
(0) >Попробовать новые возможности и проверить свои модули теперь можно бесплатно в онлайн-режиме.
Можно только попробовать или это полнофункциональный клиент?
(94) Подробнее напиши про >мой проект Инспектора, как отдельного приложения или сервиса, я хочу добавить проверку cf файлов
Тема интересна.
(95) artbear, полнофункциональный клиент
(96) artbear, не знаю даже, что тут подробнее можно написать. Проверка только не по модулям, а сразу весь cf. Но прежде чем делать, хочу оценить потребность в такой фиче.
Обновления на сервере.
Исправлены некоторые ошибки компиляции.