Skip to content

Commit

Permalink
Merge pull request #28 from owncloud/enable-phan
Browse files Browse the repository at this point in the history
Enable phan and phpstan
  • Loading branch information
DeepDiver1975 committed Jun 16, 2023
2 parents b27ade0 + b50b699 commit 163052d
Show file tree
Hide file tree
Showing 8 changed files with 131 additions and 12 deletions.
4 changes: 2 additions & 2 deletions .drone.star
Expand Up @@ -24,8 +24,8 @@ config = {
"master",
],
"codestyle": True,
"phpstan": False,
"phan": False,
"phpstan": True,
"phan": True,
"phpunit": {
"php74": {
"phpVersions": ["7.4"],
Expand Down
108 changes: 108 additions & 0 deletions .phan/config.php
@@ -0,0 +1,108 @@
<?php
/**
* @author Patrick Jahns <github@patrickjahns.de>
*
* @copyright Copyright (c) 2018, ownCloud GmbH
* @license GPL-2.0
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/

return [

// Supported values: '7.2', '7.3', '7.4', '8.0', null.
// If this is set to null,
// then Phan assumes the PHP version which is closest to the minor version
// of the php executable used to execute phan.
'target_php_version' => null,

// A list of directories that should be parsed for class and
// method information. After excluding the directories
// defined in exclude_analysis_directory_list, the remaining
// files will be statically analyzed for errors.
//
// Thus, both first-party and third-party code being used by
// your application should be included in this list.
'directory_list' => [
'src',
'vendor',
],

// A list of files to include in analysis
'file_list' => [
],

// A directory list that defines files that will be excluded
// from static analysis, but whose class and method
// information should be included.
//
// Generally, you'll want to include the directories for
// third-party code (such as "vendor/") in this list.
//
// n.b.: If you'd like to parse but not analyze 3rd
// party code, directories containing that code
// should be added to both the `directory_list`
// and `exclude_analysis_directory_list` arrays.
'exclude_analysis_directory_list' => [
'vendor',
],

// A regular expression to match files to be excluded
// from parsing and analysis and will not be read at all.
//
// This is useful for excluding groups of test or example
// directories/files, unanalyzable files, or files that
// can't be removed for whatever reason.
// (e.g. '@Test\.php$@', or '@vendor/.*/(tests|Tests)/@')
'exclude_file_regex' => '@.*/[^/]*(tests|Tests|templates)/@',

// If true, missing properties will be created when
// they are first seen. If false, we'll report an
// error message.
"allow_missing_properties" => false,

// If enabled, allow null to be cast as any array-like type.
// This is an incremental step in migrating away from null_casts_as_any_type.
// If null_casts_as_any_type is true, this has no effect.
"null_casts_as_any_type" => true,

// Backwards Compatibility Checking. This is slow
// and expensive, but you should consider running
// it before upgrading your version of PHP to a
// new version that has backward compatibility
// breaks.
'backward_compatibility_checks' => false,

// The initial scan of the function's code block has no
// type information for `$arg`. It isn't until we see
// the call and rescan test()'s code block that we can
// detect that it is actually returning the passed in
// `string` instead of an `int` as declared.
'quick_mode' => false,

// The minimum severity level to report on. This can be
// set to Issue::SEVERITY_LOW, Issue::SEVERITY_NORMAL or
// Issue::SEVERITY_CRITICAL. Setting it to only
// critical issues is a good place to start on a big
// sloppy mature code base.
'minimum_severity' => 5,

// A set of fully qualified class-names for which
// a call to parent::__construct() is required
'parent_constructor_required' => [
],

];
2 changes: 1 addition & 1 deletion Makefile
Expand Up @@ -50,7 +50,7 @@ test-php-phan: vendor-bin/phan/vendor
.PHONY: test-php-phpstan
test-php-phpstan: ## Run phpstan
test-php-phpstan: vendor-bin/phpstan/vendor
$(PHPSTAN) analyse --memory-limit=4G --configuration=./phpstan.neon --no-progress --level=5 appinfo lib
$(PHPSTAN) analyse --memory-limit=4G --configuration=./phpstan.neon --no-progress --level=5 src

.PHONY: clean-deps
clean-deps:
Expand Down
3 changes: 3 additions & 0 deletions phpstan.neon
@@ -0,0 +1,3 @@
parameters:
bootstrapFiles:
ignoreErrors:
10 changes: 4 additions & 6 deletions src/TarHeader.php
Expand Up @@ -14,9 +14,7 @@ class TarHeader {
private $size;

private $mtime = '';

private $checksum;


private $typeflag;

private $linkname = '';
Expand Down Expand Up @@ -66,8 +64,8 @@ public function getHeader() {
$fields = [
['a100', substr($this->name, 0, 100)],
['a8', str_pad($this->mode, 7, '0', STR_PAD_LEFT)],
['a8', decoct(str_pad($this->uid, 7, '0', STR_PAD_LEFT))],
['a8', decoct(str_pad($this->gid, 7, '0', STR_PAD_LEFT))],
['a8', decoct((int) str_pad($this->uid, 7, '0', STR_PAD_LEFT))],
['a8', decoct((int) str_pad($this->gid, 7, '0', STR_PAD_LEFT))],
['a12', str_pad(decoct((int)$this->size), 11, '0', STR_PAD_LEFT)],
['a12', str_pad(decoct((int)$this->mtime), 11, '0', STR_PAD_LEFT)],
// We calculate checksum later
Expand Down Expand Up @@ -124,7 +122,7 @@ protected function packFields($fields) {
* Generate unsigned checksum of header
*
* @param string $header
* @return string unsigned checksum
* @return float|int unsigned checksum
*/
protected function computeUnsignedChecksum($header) {
$unsignedChecksum = 0;
Expand Down
6 changes: 3 additions & 3 deletions src/TarStreamer.php
Expand Up @@ -149,7 +149,7 @@ public function finalize() {
* Initialize a file stream
*
* @param string $name file path or just name
* @param int $type type of the item
* @param int|string $type type of the item
* @param int $size size in bytes of the file
* @param array $opt array (optional)
* Valid options are:
Expand Down Expand Up @@ -248,15 +248,15 @@ protected function send($data) {
* Generate a PAX string
*
* @param array $fields key value mapping
* @return string PAX formated string
* @return string PAX formatted string
* @link http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&manpath=FreeBSD+8-current tar / PAX spec
*/
protected function paxGenerate($fields) {
$lines = '';
foreach ($fields as $name => $value) {
// build the line and the size
$line = ' ' . $name . '=' . $value . "\n";
$size = \strlen(\strlen($line)) + \strlen($line);
$size = \strlen((string) \strlen($line)) + \strlen($line);

// add the line
$lines .= $size . $line;
Expand Down
5 changes: 5 additions & 0 deletions vendor-bin/phan/composer.json
@@ -0,0 +1,5 @@
{
"require": {
"phan/phan": "^5.4"
}
}
5 changes: 5 additions & 0 deletions vendor-bin/phpstan/composer.json
@@ -0,0 +1,5 @@
{
"require": {
"phpstan/phpstan": "^1.10"
}
}

0 comments on commit 163052d

Please sign in to comment.