發布 Psalm 3.12,PHP 語言的靜態分析器。 PHP 8.0 的 Alpha 版本

Vimeo 公司 опубликовала 靜態分析器的新版本 詩篇3.12,它允許您檢測 PHP 程式碼中的明顯和細微錯誤,​​以及自動修正某些類型的錯誤。該系統適用於識別遺留程式碼和使用新 PHP 分支中引入的現代功能的程式碼中的問題。專案程式碼是用PHP寫的, 分發者 在麻省理工學院的許可下。

詩篇指出了大多數與類型使用不當相關的問題,以及各種 典型錯誤。例如,支援有關在表達式中混合不同類型的變數、不正確的邏輯檢查(例如“if ($a && $a) {}”、“if ($a && !$a) {}”和“if ($a) {} elseif ($a) {}”)以及物件屬性的不完整初始化的警告。分析器以多執行緒模式運行。可以執行增量掃描,僅分析自上次掃描以來發生變化的檔案。

此外,還提供安全編程工具,以實現 使用 格式註釋 文件區塊 (“/** @var Type */”)提供有關變數類型、傳回值、函數參數和物件屬性的資訊。它還支援定義類型使用模式和使用斷言表達式。例如:

/** @var 字串|null */
$a = foo();

/** @var 字串 $a */
echo strpos($a, '你好');

/** @psalm-assert-if-true B $a */
函數 isValidB(A $a):bool {
傳回 $a 實例 B && $a->isValid();
}

為了自動消除發現的問題,提供了 Psalter 實用程序,它支援插件和 它允許 修復程式碼中的常見問題,添加類型註釋,並執行諸如將類別從一個命名空間移動到另一個命名空間、在類別之間移動方法、重命名類別和方法等操作。

在新一期的詩篇中 實施的 「--taint-analysis」選項,讓您可以追蹤從使用者接收的輸入參數(例如$_GET['name'])與它們在需要轉義字元的地方的使用之間的關係(例如echo“ $name 」),包括透過追蹤中間賦值和函數呼叫鏈。關聯數組 $_GET、$_POST 和 $_COOKIE 的使用被視為潛在危險資料的來源,但也可能 決心 自己的來源。需要逃避追蹤的操作包括導致 HTML 內容的輸出操作、新增 HTTP 標頭或執行 SQL 查詢。

當使用 echo、exec、include 和 header 等函數時會套用該檢查。在分析轉義的必要性時,會考慮文字、帶有 SQL、HTML 和 Shell 程式碼的字串、帶有身份驗證參數的字串等資料類型。所提出的模式允許識別導致跨站點腳本(XSS)或 SQL 程式碼替換的程式碼漏洞。

此外,還可以注意到 開始 新 PHP 8.0 分支的 alpha 測試。該版本計劃於 26 月 XNUMX 日發布。新分支預計將包含以下內容: 創新AS:

  • 包容 即時編譯器,使用它可以提高生產力。
  • 支持 聯合類型,定義兩種或多種類型的集合(例如,「public function foo(Foo|Bar $input): int|float;」)。
  • 支持 屬性 (註解)允許您將元資料(例如類型資訊)綁定到類,而無需使用 Docblock 語法。
  • 縮短語法 類別定義,允許您組合建構函數和屬性的定義。
  • 新的返回類型 - 靜止.
  • 新類型- 混合,可用來判斷函數是否接受不同類型的參數。
  • 表達 來處理異常狀況。
  • 弱映射 創建可以在垃圾收集期間犧牲的物件(例如,儲存不必要的快取)。
  • 機會 對物件使用表達式“::class”(類似於呼叫 get_class())。
  • 機會 未綁定到變數的異常的 catch 區塊中的定義。
  • 機會 在函數參數清單中的最後一個元素後面留下一個逗號。
  • 新介面 可穿線 標識任何可以轉換為字串的字串類型或資料(可以使用 __toString() 方法)。
  • 新功能 海峽包含(),strpos 的簡化類似物,用於確定子字串的出現,以及函數 str_starts_with() 和 str_ends_with() 用於檢查字串開頭和結尾的匹配。
  • 添加了功能 fdiv(),它執行除法運算,除以零時不會拋出錯誤。
  • 改變了 字串連接邏輯。 例如,表達式 'echo "sum:" 。 $a + $b' 之前被解釋為 'echo ("sum: " . $a) + $b',在 PHP 8 中將被視為 'echo "sum: " 。 ($a + $b)'。
  • 收緊 檢查算術和位元運算,例如表達式“[] % [42]”和“$object + 4”將導致錯誤。
  • 實施的 一種穩定的排序演算法,其中相同值的順序在不同的運行中得以保留。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster