Psalm 7, 보안 분석을 기본으로 켜다
Psalm 7 release: PHP security&static analysis software

PHP 정적 분석 도구 Psalm 7이 나왔다. 보안 분석이 타입 검사·미사용 코드 탐지와 한 번의 실행에 통합되면서 기본값으로 켜졌고, taint 추적은 최대 10배 빨라졌다. NoSQL·LLM 프롬프트·URL 주입까지 잡아내고, Hack의 능력 모델을 본뜬 새로운 purity 모델과 그래프 기반 미사용 코드 탐지, 템플릿 기본값, PHP 8.5·8.6 지원이 더해졌다. PHPUnit·Symfony·Laravel 등 플러그인은 설치 없이 자동으로 켜진다.
Psalm의 버전 번호는 더 이상 플러그인 API를 따라가지 않는다. 플러그인 API의 호환성 깨는 변경은 minor·patch 릴리스에서도 언제든 나올 수 있다.
HN 토론
46- idoubtit
PHP에 익숙하지 않은 사람이라면, 정적 분석은 거의 필수적입니다. 왜냐하면 공식 PHP 타입 시스템은 최소한이기 때문입니다. 상세한 타입은 phpdoc 주석을 통해 추가되며, 이는 IDE가 제대로 된 자동 완성을 제공하는 데도 도움이 됩니다. 예를 들어, 단순한 "array"는 phpdoc로 상세히 지정해야 합니다:
/**
* @param array<string, MyRecord> $input
* @return list<int>
*/
function foo(array $input): array
{
foreach ($input as $string => $record) {
// IDE는 $record가 MyRecord의 인스턴스임을 압니다
정적 분석은 두 타입 시스템을 모두 사용하며, phpdoc가 일관적인지 확인하는 유일한 방법입니다. Psalm은 다양한 엄격성 수준을 가지고 있으며, 매우 느슨한 수준에서도 오류나 코드 스멜을 감지하는 데 도움이 될 수 있습니다.
PHP에는 두 가지 주요 정적 분석 도구가 있는데, Psalm과 PHPstan이며 둘 다 PHP로 작성되었습니다. 후자는 예전에 훨씬 느렸지만, 마지막으로 시도했을 때는 거의 차이가 없었습니다(10만 줄 + 의존성에 약 20초).
내 추측으로는 Rust로 작성된 새로운 경쟁자 Mago가 아마 곧 다른 도구들을 대체할 것입니다. 그 명령어들(analyze, lint)은 이미 psalm/phpstan만큼 거의 완전합니다. 하지만 레벨 개념이 없기 때문에 마이그레이션은 쉽지 않을 것입니다.
- littlecorner
다윗의 식가욘
- tosti
> 공식 Discord 커뮤니티!
그건 퇴보입니다.
- anthk
PHP의 Rust 재작성을 사용해야 한다.
- origini
아이고, PHP는 내가 독학한 첫 언어였는데, 아직도 반환 타입에 PHPDoc 주석이 필요하다고?
제발, PHP에는 형편없는 점이 너무 많지만, 이런 기본적인 것조차 아직 언어 자체에 없는 거야?