Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

DeepCode — система анализа кода на базе глубинного обучения

Блог компании ITSumma Программирование *Big Data *GitHub Машинное обучение *
Швейцарский стартап DeepCode разрабатывает систему автоматического код-ревью на базе глубинного обучения, сообщает venturebeat. На днях компания закрыла первый инвестиционный раунд и получила на свое развитие $4 млн.

В основе технологии, предлагаемой командой DeepCode, лежит семантический анализ кода вкупе с обучением нейросети с помощью Big Data. Самое интересное в этой разработке то, что в качестве базы данных для обучения сети будет использоваться код публичных репозиториев GitHub.


Кликабельно

Весь процесс разработчики разделяют на несколько этапов. Первый — разметка базы, то есть парсинг самого GitHub и сортировка данных. В качестве главного параметра будет выступать язык программирования, на котором написан проект. Далее идет разметка данных и подготовка спаршенного кода к потреблению нейросетью. Ну и последний, третий этап — это обучение самого DeepCode.
Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 5.8K
Комментарии 11

Визуализация эмоций программиста

Чулан
О чём думал программист, когда писал конкретный код? Какие чувства и эмоции он испытывал? Нэт Прайс решил ответить на эти вопросы и сделал небольшую утилитку, которая извлекает текстовые комментарии из программного кода и загружает их в Synesketch, движок для визуализации эмоций по текстовым фрагментам.

Нэт говорит, что решил учитывать не публичные, а только служебные примечания (сообщения программистов друг другу или самому себе через исходные тексты программы), благо их и так довольно много в исходниках.

Для примера взяли несколько известных программ. По первым картинкам видно, насколько более счастливыми становились разработчики Apache Tomcat от версии к версии.
Читать дальше →
Всего голосов 10: ↑8 и ↓2 +6
Просмотры 484
Комментарии 11

Почему PVS-Studio 4.00 будет платным решением

Блог компании PVS-Studio
К сожалению, нам придется сделать статический анализатор PVS-Studio 4.00 полностью платным. Мы планировали сделать платным только набор 64-битных правил, а анализ общего назначения и анализ OpenMP-программ свободными для использования. Но мир суров и не поддержал наши начинания.
Читать дальше →
Всего голосов 85: ↑46 и ↓39 +7
Просмотры 982
Комментарии 90

Визуализация связей внутри класса с помощью GraphViz

PHP *
Прочитав книжку Р. Мартина «Чистый код», я исполнился решимостью и принялся за рефакторинг своего старого, большого и грязного проекта.

И захотелось мне посмотреть, как в одном из самых простых классов связаны между собой методы и поля. PhpCallGraph, быстро нагугленный, наладить не удалось (какие-то проблемы с xdebug), и к тому же, судя по примерам, он показывает связи во всём проекте, трассируя его, а мне нужно было исследовать один класс.

Я решил написать собственное решение, и вот что получилось.
Красивые картинки и не только
Всего голосов 41: ↑39 и ↓2 +37
Просмотры 6.6K
Комментарии 19

Вирус без программирования

Антивирусная защита *
Из песочницы
Введение

Хороший знакомый, в свободное время занимающийся ремонтом компьютеров, поделился очередным выловленным вирусом. Популярный антивирус его не определял, что вовсе неудивительно и скоро вы поймёте почему.

Процесс был скрыт от Диспетчера задач Windows, но Auslogics Task Manager отображал его как upp1.exe, находящийся в системном System32 каталоге. Причём, если ОС 64-разрядная или установлена не по адресу C:\Windows, то вирь всё равно устанавливается в C:\Windows\System32, по пути создавая несуществующие каталоги соответственно. Процесс находился в списке автозапуска и с помощью Autoruns была удалена ветвь. Но как только Autoruns закрывается, запускается новая копия вируса с именем upp2.exe. Удаляешь его — появляется rundl132.exe и так по кругу. По всей видимости, они запускают сами себя и происходит проверка на отсутствие процесса. Решилось очень просто — убийством дерева процессов.

Исследование

Первое, на что я обратил внимание, так это на размер исполняемых файлов, кой был чуть больше 1 МБ на каждый exe. Сомневаюсь, что хоть один уважающий себя вирусописатель на такое способен.

Перейдём к более интересному. Загрузив один из исполняемых файлов в HEX редактор, я стал бегло осматривать его с конца… И не зря с конца!
Читать дальше →
Всего голосов 71: ↑53 и ↓18 +35
Просмотры 4.4K
Комментарии 35

Информационные отношения. Как извлечь опыт из окружающей среды

Чулан
Из песочницы
Речь пойдёт о том, в какие информационные отношения мы можем вступать.

Все сущности в реальности находятся в некоторой зависимости друг от друга. Эти зависимости я буду называть отношениями. Их можно объединить в различные группы:
  • Связь/свойство
  • Взаимодействие/контакт
  • Снятие/перенос


Отношения каждой группы могут переходить в оставшиеся две. Сейчас я расскажу, в чем их суть.
Читать дальше →
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 448
Комментарии 1

Upsource: новая платформа от JetBrains

Блог компании JetBrains Программирование *Kotlin *
В прошлом месяце, на конференции JetBrains Day мы объявили о новой платформе Upsource, над которой работаем. В этом обзоре предлагаем вам познакомиться с ней поближе.

Как знают многие пользователи наших продуктов, JetBrains разработала и поддерживает гибкую расширяемую платформу IntelliJ, служащую фундаментом для всех наших интегрированных сред разработки, включая IntelliJ IDEA, PhpStorm, WebStorm, RubyMine, PyCharm и AppCode, а также для Android Studio от Google. Именно IntelliJ обеспечивает всю основную функциональность этих IDE; остальные особенности и «примочки», придающие индивидуальность каждой из IDE, — не более чем набор плагинов к платформе.

Несмотря на успешность этой модели, мы поняли, что платформу IntelliJ необходимо развивать. Поэтому вот уже более года мы ведем работу над внутренним проектом по ее модуляризации, с целью предоставления ее возможностей в «бескорпусном» исполнении. Это должно открыть путь для целого ряда новых применений, одним из которых является Upsource — тоже платформа, но серверная.

image
Подробности далее
Всего голосов 100: ↑95 и ↓5 +90
Просмотры 37K
Комментарии 56

Особенности мобильных приложений на платформе iOS, использующих логин и пароль клиентов для доступа к платному контенту

Блог компании Инфосистемы Джет Информационная безопасность *Разработка под iOS *
Разработчики мобильных приложений зачастую сталкиваются с необходимостью хранить конфиденциальные данные пользователя на пользовательском устройстве. Это могут быть, например, номер кредитной карточки или аутентификационные данные. В этой статье мы поговорим о типичных ошибках реализации хранения конфиденциальных данных с точки зрения информационной безопасности на примере мобильной платформы iOS.
Обычно настройки приложения хранятся в конфигурационных файлах. Библиотека Cocoa Touch, используемая при разработке приложений для мобильной платформы iOS, предоставляет слой абстракции для хранения настроек приложения в классе NSUserDefaults. Класс NSUserDefaults реализует нелюбимый многими шаблон проектирования «Одиночка» (более известный как Singleton), предоставляя доступ к интерфейсу над стандартным конфигурационным файлом приложения.
Стандартный файл конфигурации приложения располагается в его домашней директории по относительному адресу Library/Preferences/<your.company.name>.<app.name>.plist. Как и другие файлы, расположенные в «песочнице», он не доступен на чтение для других приложений пользовательского уровня. Исключения составляют устройства, подвергнутые модификациям политики безопасности системы (jailbroken-устройства).
Многие разработчики по достоинству оценили удобство работы с классом NSUserDefaults. Подавляющее число приложений используют его для хранения внутренних настроек и/или настроек пользователя. К сожалению, удобство использования редко коррелирует с безопасностью. Хранение конфиденциальных данных пользователя в стандартном файле настроек является типичной ошибкой разработчиков, приводящей к утечке пользовательской информации.
В результате исследования исходного кода Приложения А на наличие ошибок в контексте информационной безопасности было выявлено, что приложение сохраняет данные аутентификации пользователя в конфигурационном файле настроек. Загрузив Приложение А на iPad под управление оригинальной операционной системы iOS версии 6.1.3, мы прошли стадию аутентификации и принялись за исследование файла настроек приложения.

image
Рис. 1. Загрузка приложения на iPad
Читать дальше →
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 6.3K
Комментарии 0

Утечка конфиденциальных данных при кешировании сетевых запросов на платформе iOS

Блог компании Инфосистемы Джет Информационная безопасность *Разработка под iOS *
Критичным аспектом в контексте информационной защищенности пользовательских данных является конфиденциальность передаваемых данных в процессе взаимодействия защищаемого приложения с веб-сервисами. Например, утрата конфиденциальности в приложениях, манипулирующих номером банковской карты и кодом аутентификации CVV2/CVC2, представляется уязвимостью критичной степени важности. Одной из распространенных ошибок при разработке защищенных приложений для мобильной платформы iOS, приводящих к частичной или полной утрате конфиденциальности передаваемых данных, является чрезмерное кэширование межсетевых запросов.

В контексте разработки приложений для мобильных платформ кэширование межсетевых запросов можно отнести к категории рекомендуемых и наиболее часто используемых практик, поскольку оно позволяет разработчикам значительно улучшить производительность приложения. Наборы средств разработки для современных мобильных платформ обычно включают в себя пакеты, автоматизирующие процесс обработки и кэширования межсетевых запросов, в частности HTTP-запросов.

Подобно кэшированию запросов динамической памяти или условных переходов в микропроцессорах, интерфейсы классов, кэширующих HTTP-запросы, являются прозрачными для разработчика и осуществляют кэширование на фоне. Продолжая аналогию с функциональным блоком кэширования в процессоре, можно отметить, что отсутствие представлений о внутреннем устройстве механизма кэширования зачастую приводит к грубым ошибкам программирования. В контексте мобильных приложений, неправильное использование кэша HTTP-запросов приводит к падению производительности приложения и частичной либо полной утрате конфиденциальности. Примером распространенной ошибки, приводящей к падению производительности, является повторное кэширование запросов приложением (Double caching).

Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 6K
Комментарии 10

Опыт кастомного анализа c# кода

Совершенный код *.NET *Visual Studio *
Tutorial
Довольно давно я делился проблемой тестирования кода в финализаторе и недавно жаловался на падение теста (Как тестировать код финализатора (c#) и Как тестировать код финализатора (c#). Послесловие: тест все-таки упал).
В ходе обсуждения комрадом withkittens была высказана идея:
Финализатор (при правильной реализации IDisposable pattern) должен (should) вызывать Dispose(false). Этот факт можно тестировать статическим анализом. Соответственно, если Dispose(false) вызывает удаление файла (вы же написали тест?), то можно быть уверенным, что и финализатор тоже вызовет удаление файла, unit-тест излишен.

Мне эта идея показалась очень здравой, кроме того, иногда хочется контролировать исходный код более кастомно, чем дает встроенный анализ кода или решарпер.
Опыт реализации кастомных правил анализа кода под катом + «как ozcode помог в процессе исследования внешней библиотеки»
Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 9.5K
Комментарии 25

JetBrains Upsource EAP: продукт для просмотра репозиториев и code review, с которым теперь можно поиграться

Блог компании JetBrains Программирование *
Хабр, привет!
image
Меньше года назад мы рассказывали о разработке нашей новой веб-платформы для просмотра исходного кода.

За прошедшее время Upsource претерпел массу мелких и крупных изменений и стал, в частности, инструментом для code review. На днях же мы открыли программу EAP (Early Access Program), и предрелизные билды Upsource теперь доступны для всех желающих. На момент написания статьи число желающих стремительно приближается к тысяче, и не исключено, что вам тоже будет интересно лично познакомиться с нашим новым продуктом.
Знакомимся с Upsource
Всего голосов 60: ↑58 и ↓2 +56
Просмотры 22K
Комментарии 51

Анализатор исходных кодов RATS

Информационная безопасность *
Одним из методов поиска уязвимостей в программном обеспечении является использование анализаторов исходных текстов. В данной посте хочу рассказать об одном из них, а именно о RATS (Rough Auditing Tool for Security). Упоминания о RATS встречались не раз в уважаемых мной источниках, а именно тут, тут и еще здесь. Однако, реального примера использования нигде не было.
Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Просмотры 9K
Комментарии 4

Делаем свободное ПО безопасней: баги и фиксы InstantCMS

Блог компании Positive Technologies Информационная безопасность *Разработка веб-сайтов *Open source *
Этой статьёй мы начинаем серию материалов, посвященных поиску уязвимостей в популярных системах с открытым кодом. Ошибки в OpenSSL и glibc показали, что тысячи глаз, имеющих доступ к коду, — не гарантия безопасности open source. Конечно, и закрытый код не становится безопаснее от самого факта закрытости. Просто при наличии правильных инструментов доступность исходного кода позволяет выявить гораздо больше уязвимостей, чем при тестировании методом «чёрного ящика». Вопрос лишь в том, кто этим воспользуется раньше – разработчики или злоумышленники.

image

Последние два года в ходе разработки системы анализа исходных кодов PT Application Inspector мы проверяли на стендах и «в поле» сотни бесплатных и коммерческих, открытых и проприетарных приложений. В ходе этих тестов было найдено значительное число уязвимостей нулевого дня. Часть этих проблем была закрыта и известна по последним докладам о безопасности SCADA, часть ожидает своей погибели в ходе ответственного разглашения.

Воспользуемся же открытостью open source и покажем, как выявляются и анализируются уязвимости в исходном коде. В роли первого подопытного выступает бесплатная система управления сообществами InstantCMS, работающая на PHP и MySQL. На базе данного конструктора создано немало социальных сетей, сайтов знакомств, онлайн-клубов, городских порталов и государственных ресурсов.
Читать дальше →
Всего голосов 18: ↑15 и ↓3 +12
Просмотры 11K
Комментарии 7

Не совсем известные решения по защите ИТ-инфраструктуры бизнеса

Блог компании КРОК Информационная безопасность *


Классический подход российского бизнеса сегодня — это установка файрволла, затем после первых попыток направленных атак — системы защиты от вторжений. И дальше спать спокойно. На практике это даёт хороший уровень защиты только против скрипткидди, при любой более-менее серьёзной угрозе (например, от конкурентов или атаке от недоброжелателей, либо направленной атаке от иностранной группы промшпионажа) нужно что-то дополнительное, помимо классических средств.

Я уже писал про профиль типовой направленной атаки на российское гражданское предприятие. Теперь расскажу о том, как меняется стратегия защиты в целом в нашей стране в последние годы, в частности, в связи со смещением векторов атак на 0-day и связанные с этим внедрения статических анализаторов кода прямо в IDE.

Плюс пара примеров на сладкое — вы узнаете, что может твориться в полностью изолированной от Интернета сети и на периметре банка.
Читать дальше →
Всего голосов 29: ↑24 и ↓5 +19
Просмотры 50K
Комментарии 13

Визуализация качества кода с PhpMetrics

Тестирование IT-систем *PHP *Программирование *Совершенный код *Laravel *
Перевод
Недавно мне попался отличный инструмент для анализа PHP кода. Публикую перевод статьи с обзором этого инструмента.


PhpMetrics использует D3 и несколько сложных алгоритмов для сканирования кода вашего приложения и вывода замысловатых отчетов по результатам.
image
Читать дальше →
Всего голосов 22: ↑20 и ↓2 +18
Просмотры 20K
Комментарии 18

Комментарий к «Как попасть на дачу президента в пять часов утра»

Блог компании PVS-Studio Информационная безопасность *
Было бы странно, заниматься поиском ошибок в программах и при этом пройти мимо этой статьи.

Хочу оставить ряд комментариев. Основной их смысл, что это не похоже на страшные закладки. Мне этот код больше напоминает какой-то тестовый прототип, а не готовое приложение. Так что возможно не всё так страшно, как преподносит автор в статье. Во-первых, код содержит ошибку и случайные числа используются всегда. В реальности мимо такого вряд ли прошли в процессе тестировании системы. А во-вторых, существует такое понятие как «сертификация программ». И приведенный фрагмент кода — первый кандидат на обнаружение.
Читать дальше →
Всего голосов 75: ↑47 и ↓28 +19
Просмотры 28K
Комментарии 26

Анализируй это или о качестве программного обеспечения

Блог компании Softmart Разработка веб-сайтов *Тестирование IT-систем *Программирование *
Почти всю свою сознательную карьеру разработчика, руководителя проектов, консультанта по процессам разработки я оставался в плену очень распространенного и простого заблуждения. Если программа выполняет требуемые функции, претензий к стабильности и производительности нет, то это «нормальная» программа. Прошу прощения за несколько утрированную формулировку, но так оно и есть, если разобраться.

За определениями термина «качество программного обеспечения» не грех обратиться к стандартам. Несколько определений из разных стандартов удобно приведены на одной странице wiki. И что же?! В фокусе способности программы удовлетворять потребностям Заказчика.
Читать дальше →
Всего голосов 7: ↑4 и ↓3 +1
Просмотры 6.1K
Комментарии 2

Написание кастомных правил для анализатора кода Kiuwan

Блог компании Softmart Разработка веб-сайтов *Тестирование IT-систем *Программирование *
Продолжаем нашу серию заметок по статическому анализатору кода Kiuwan.

Данный класс инструментов исследует текст программ на предмет выявления в них каких-то известных шаблонов уязвимостей, ошибок, неточностей, неэффективных действий и многого другого. Откуда берутся эти шаблоны, мы писали в прошлый раз. Для каждого языка программирования эти шаблоны будут свои в силу понятных отличий в синтаксисе, но будут и общие правила качественного кода, типа избегать использования повторяющихся блоков кода.

Однако, не всегда этих шаблонов и правил хватает для оценки определенных качеств написанной программы. В каждом конкретном случае может понадобиться свой определяющий параметр. Например, нам важно убедиться, нет ли в написанной банковской программе скрытых транзакций копеечек на чей-нибудь счет. Или проверить, что не используются никакие недопустимые внешние библиотеки. В этом случае, нам просто необходимо иметь возможность заставить анализатор проверять не только штатные шаблоны, но и наши дополнительные правила.


Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 3.1K
Комментарии 0

Табы или пробелы? Анализ 400 тысяч репозиториев GitHub, миллиарда файлов, 14 ТБ кода

Программирование *SQL *GitHub


Для пытливых разработчиков до сих пор остается актуальным вопрос использования табуляции и пробелов для форматирования кода. Могут ли они быть взаимозаменяемы: например, 2 пробела на табуляцию или 4? Но единого стандарта нет, поэтому иногда между разработчиками возникает непонимание. Кроме того, различные IDE и их компиляторы обрабатывают табуляцию также по-своему.

Решением вопроса обычно становится соглашение о правилах форматирования в рамках проекта или языка программирования в целом.

Команда разработчиков из Google исследовала проекты в репозитории Github. Они проанализировали код, написанный на 14 языках программирования. Целью исследования было выявить соотношение табуляций и пробелов — то есть, наиболее популярный способ форматирования текста для каждого из языков.
Всего голосов 51: ↑46 и ↓5 +41
Просмотры 81K
Комментарии 243

Система отчётов: как получать 50 млн. отчетов и сохранить Дзен

Блог компании Parallels Тестирование IT-систем *Анализ и проектирование систем *Отладка *Разработка под Linux *


Чем сложнее программный продукт, чем больше он взаимодействует со сторонними системами (часто не менее сложными), тем выше вероятность сбоев в работе. Тестирование помогает найти большинство багов перед выкатыванием релиза, но иногда что-то может проскользнуть. И чтобы быстро получать подробную информацию о факте сбоя и сопутствующих условиях, в наших продуктах широко используется система отчётов. О её устройстве мы хотим сегодня рассказать.
Читать дальше →
Всего голосов 28: ↑27 и ↓1 +26
Просмотры 6.3K
Комментарии 4