Psalm

Version: 6.16.1 darwin linux windows php analysis

Psalm is a static analysis tool that attempts to dig into your program and find as many type-related bugs as possible.

It has a few features that go further than other similar tools:

Mixed type warnings

If Psalm cannot infer a type for an expression then it uses a mixed placeholder type. mixed types can sometimes mask bugs, so keeping track of them helps you avoid a number of common pitfalls.

Intelligent logic checks

Psalm keeps track of logical assertions made about your code, so if ($a && $a) and if ($a && !$a) are both treated as issues. Psalm also keeps track of logical assertions made in prior code paths, preventing issues like if ($a) elseif ($a) .

Property initialisation checks

Psalm checks that all properties of a given object have values after the constructor is called.

Taint analysis

Psalm can detect security vulnerabilities in your code.

Language Server

Psalm has a Language Server that’s compatible with a range of different IDEs.

Automatic fixes

Psalm can fix many of the issues it finds automatically.

Automatic refactoring

Psalm can also perform simple refactors from the command line.

Installation Instructions

Linux
Depends on: php

Download Psalm
{
  "url": "{{ .SVar `.tool.psalm.download.url` }}",
  "destination_folder": "{{ .PDownloads }}",
  "output_filename": "{{ .SVar `.tool.psalm.download.filename` }}",
  "overwrite": false
}
Copy download to tool space
{
  "source": "{{ .PDownloads }}/{{ .SVar `.tool.psalm.download.filename` }}",
  "destination": "{{ .PTools }}/psalm/{{ .SVar `.tool.psalm.download.version` }}/psalm"
}
Make program executable
{
  "path": "{{ .PTools }}/psalm/{{ .SVar `.tool.psalm.download.version` }}/psalm",
  "permission_bits": 504
}

MacOS
Depends on: php

Download Psalm
{
  "url": "{{ .SVar `.tool.psalm.download.url` }}",
  "destination_folder": "{{ .PDownloads }}",
  "output_filename": "{{ .SVar `.tool.psalm.download.filename` }}",
  "overwrite": false
}
Copy download to tool space
{
  "source": "{{ .PDownloads }}/{{ .SVar `.tool.psalm.download.filename` }}",
  "destination": "{{ .PTools }}/psalm/{{ .SVar `.tool.psalm.download.version` }}/psalm"
}
Make program executable
{
  "path": "{{ .PTools }}/psalm/{{ .SVar `.tool.psalm.download.version` }}/psalm",
  "permission_bits": 504
}

Binaries