Издање Псалма 3.12, статичког анализатора за ПХП језик. Алфа издање ПХП-а 8.0

Вимео Цомпани опубликовала ново издање статичког анализатора Псалм КСНУМКС, који вам омогућава да идентификујете и очигледне и суптилне грешке у ПХП коду, као и да аутоматски исправите неке врсте грешака. Систем је погодан за идентификацију проблема како у застарелом коду тако и у коду који користи модерне карактеристике уведене у нове гране ПХП-а. Код пројекта је написан у ПХП-у и дистрибуира под лиценцом МИТ-а.

Псалам идентификује већину проблема повезаних са погрешном употребом слова, као и разне типичне грешке. На пример, подржава упозорења о мешању променљивих различитих типова у изразу, нетачним логичким тестовима (као што су „иф ($а && $а) {}“, „иф ($а && !$а) {}“ и „ иф ( $а) {} елсеиф ($а) {}"), непотпуна иницијализација својстава објекта. Анализатор ради у вишенитном режиму. Могуће је извршити инкрементална скенирања, која анализирају само датотеке које су се промениле од последњег скенирања.

Поред тога, обезбеђени су безбедни алати за програмирање који омогућавају користите напомене у формату Доцблоцк (“/** @вар Типе */”) за пружање информација о типовима променљивих, повратним вредностима, параметрима функције, својствима објекта. Такође је подржано дефинисање образаца коришћења типова и коришћење изјава ассерт. На пример:

/** @вар стринг|нулл */
$а = фоо();

/** @вар стринг $а */
ецхо стрпос($а, 'здраво');

/** @псалм-ассерт-иф-труе Б $а */
фунцтион исВалидБ(А $а) : боол {
ретурн $а инстанцеоф Б && $а->исВалид();
}

Да бисте аутоматизовали отклањање пронађених проблема, обезбеђен је услужни програм Псалтер, који подржава додатке и Он омогућава решавају уобичајене проблеме кода, додају напомене о типовима и обављају манипулације као што су премештање класа из једног именског простора у други, премештање метода између класа и преименовање класа и метода.

У новом броју Псалма имплементиран опција "--таинт-аналисис" вам омогућава да пратите однос између улазних параметара примљених од корисника (на пример, $_ГЕТ['наме']) и њихове употребе на местима која захтевају избегавање карактера (на пример, ехо " $наме "), укључујући праћење ланаца међудодела и позива функција. Коришћење асоцијативних низова $_ГЕТ, $_ПОСТ и $_ЦООКИЕ се сматра изворима потенцијално опасних података, али је такође могуће одређивање сопствени извори. Радње које захтевају избегавање праћења укључују излазне операције које генеришу ХТМЛ садржај, додају ХТТП заглавља или извршавају СКЛ упите.

Валидација се користи када се користе функције као што су ецхо, екец, инцлуде и хеадер. Када се анализира потреба за избегавањем, узимају се у обзир типови података као што су текст, стрингови са СКЛ, ХТМЛ и Схелл кодом, стрингови са параметрима аутентификације. Предложени режим вам омогућава да идентификујете рањивости у коду које доводе до скриптовања на више локација (КССС) или замене СКЛ-а.

Поред тога, може се приметити почетак алфа тестирање нове ПХП 8.0 гране. Издање је заказано за 26. новембар. У новој грани се очекују: иновацијеКао:

  • Повер уп ЈИТ компајлер, чија ће употреба побољшати продуктивност.
  • подршка типови синдиката, дефинишући колекције од два или више типова (на пример, „јавна функција фоо(Фоо|Бар $инпут): инт|флоат;”).
  • подршка атрибути (напомене) које вам омогућавају да повежете метаподатке (као што су информације о типу) за класе без употребе Доцблоцк синтаксе.
  • Скраћена синтакса дефиниције класе, што вам омогућава да комбинујете дефиницију конструктора и својства.
  • Нови тип враћања - статички.
  • Нови тип - мешовит, који се може користити за одређивање да ли функција прихвата параметре различитих типова.
  • Израз бацање за обраду изузетака.
  • ВеакМап за креирање објеката који се могу жртвовати током сакупљања смећа (на пример, за складиштење непотребних кеша).
  • Прилика користећи израз „::цласс“ за објекте (аналогно позиву гет_цласс()).
  • Прилика дефиниције у блоку цатцх изузетака који нису везани за променљиве.
  • Прилика остављајући зарез после последњег елемента на листи параметара функције.
  • Нови интерфејс Стрингабле да идентификује све типове стрингова или податке који се могу конвертовати у стринг (за које је доступан метод __тоСтринг()).
  • Нова карактеристика стр_цонтаинс(), поједностављени аналог стрпос за одређивање појављивања подниза, као и функције стр_стартс_витх() и стр_ендс_витх() за проверу подударања на почетку и крају стринга.
  • Додата функција фдив(), који врши операцију дељења без грешке приликом дељења са нулом.
  • Промењено логика спајања низа. На пример, израз 'ецхо "сум:" . $а + $б' се раније тумачило као 'ецхо ("сума: " . $а) + $б', ау ПХП 8 ће се третирати као 'ецхо "сум: " . ($а + $б)'.
  • Затегнути провера аритметичких и битних операција, на пример, изрази "[] % [42]" и "$објецт + 4" ће довести до грешке.
  • Имплементирано стабилан алгоритам за сортирање у којем се редослед идентичних вредности чува у различитим серијама.

Извор: опеннет.ру

Додај коментар