feat: 🧑💻 switch to phpstan
This commit is contained in:
parent
c4a9908f58
commit
e2735080f0
@ -24,7 +24,7 @@ jobs:
|
||||
- run: composer install
|
||||
- run: composer run lint
|
||||
- run: composer run cs:check
|
||||
- run: composer run psalm
|
||||
- run: composer run phpstan
|
||||
|
||||
nodejs:
|
||||
runs-on: ubuntu-latest
|
||||
|
@ -5,32 +5,33 @@
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"OCA\\RePod\\": "lib/",
|
||||
"OCA\\GPodderSync\\": "stubs/OCA/GPodderSync/"
|
||||
"OCA\\GPodderSync\\": "stubs/OCA/GPodderSync/",
|
||||
"OCP\\": "vendor/nextcloud/ocp/OCP/"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "find . -name \\*.php -not -path './vendor/*' -not -path './vendor-bin/*' -not -path './build/*' -print0 | xargs -0 -n1 php -l",
|
||||
"cs:check": "php-cs-fixer fix --dry-run --diff",
|
||||
"cs:fix": "php-cs-fixer fix",
|
||||
"psalm": "psalm --threads=1 --no-cache --show-info=true",
|
||||
"phpstan": "phpstan clear-result-cache && phpstan analyse -c phpstan.neon",
|
||||
"rector": "rector && composer cs:fix"
|
||||
},
|
||||
"require": {
|
||||
"php": "~8.1.31"
|
||||
"php": "^8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"nextcloud/ocp": "^30.0.6",
|
||||
"roave/security-advisories": "dev-latest",
|
||||
"nextcloud/coding-standard": "^1.3.2",
|
||||
"nextcloud/ocp": "^30.0.6",
|
||||
"nextcloud/rector": "^0.3.1",
|
||||
"phpstan/phpstan": "^1.12",
|
||||
"rector/rector": "~1.2.10",
|
||||
"vimeo/psalm": "^6.5.1"
|
||||
"roave/security-advisories": "dev-latest"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"sort-packages": true,
|
||||
"platform": {
|
||||
"php": "8.1.31"
|
||||
"php": "8.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
3094
composer.lock
generated
3094
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,6 @@ class Application extends App implements IBootstrap
|
||||
}
|
||||
|
||||
public function boot(IBootContext $context): void {
|
||||
/** @psalm-suppress DeprecatedInterface */
|
||||
$appContainer = $context->getAppContainer();
|
||||
|
||||
/** @var IAppManager $appManager */
|
||||
|
@ -10,9 +10,9 @@ use OCA\GPodderSync\Core\EpisodeAction\EpisodeAction;
|
||||
* Base: https://github.com/pbek/nextcloud-nextpod/blob/main/lib/Core/EpisodeAction/EpisodeActionExtraData.php.
|
||||
* Specs: https://github.com/Podcast-Standards-Project/PSP-1-Podcast-RSS-Specification/blob/main/README.md#required-item-elements.
|
||||
*
|
||||
* @psalm-import-type EpisodeActionType from EpisodeAction
|
||||
* @phpstan-import-type EpisodeActionType from EpisodeAction
|
||||
*
|
||||
* @psalm-type EpisodeActionExtraDataType = array{
|
||||
* @phpstan-type EpisodeActionExtraDataType = array{
|
||||
* title: string,
|
||||
* url: ?string,
|
||||
* name: string,
|
||||
|
@ -142,7 +142,6 @@ class EpisodeActionReader extends CoreEpisodeActionReader
|
||||
* @param null|\SimpleXMLElement|string $value
|
||||
*/
|
||||
private function stringOrNull($value): ?string {
|
||||
/** @psalm-suppress RiskyTruthyFalsyComparison */
|
||||
if (!empty($value)) {
|
||||
return (string) $value;
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ class MultiPodService implements IPodProvider
|
||||
array_unique(
|
||||
array_map(
|
||||
fn (PodcastData $feed) => $feed->getLink(),
|
||||
array_filter($podcasts, fn (PodcastData $feed) => $feed->getLink())
|
||||
array_filter($podcasts, fn (PodcastData $feed): bool => null !== $feed->getLink())
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -29,6 +29,9 @@ class SearchProvider implements IProvider
|
||||
return $this->l10n->t('Podcast');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string> $routeParameters
|
||||
*/
|
||||
public function getOrder(string $route, array $routeParameters): int {
|
||||
if (str_starts_with($route, Application::APP_ID.'.')) {
|
||||
// Active app, prefer my results
|
||||
|
6
phpstan.neon
Normal file
6
phpstan.neon
Normal file
@ -0,0 +1,6 @@
|
||||
parameters:
|
||||
level: 9
|
||||
paths:
|
||||
- lib
|
||||
ignoreErrors:
|
||||
- '#Method [a-zA-Z0-9:\(\)\\_]+ return type with generic class OCP\\AppFramework\\Http\\[a-zA-Z]+ does not specify its types#'
|
29
psalm.xml
29
psalm.xml
@ -1,29 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<psalm
|
||||
errorLevel="1"
|
||||
resolveFromConfigFile="true"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="https://getpsalm.org/schema/config"
|
||||
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
|
||||
findUnusedBaselineEntry="true"
|
||||
findUnusedCode="false"
|
||||
phpVersion="8.1"
|
||||
>
|
||||
<projectFiles>
|
||||
<directory name="lib" />
|
||||
<directory name="stubs" />
|
||||
<ignoreFiles>
|
||||
<directory name="vendor" />
|
||||
</ignoreFiles>
|
||||
</projectFiles>
|
||||
<extraFiles>
|
||||
<directory name="vendor" />
|
||||
</extraFiles>
|
||||
<issueHandlers>
|
||||
<InvalidReturnType>
|
||||
<errorLevel type="suppress">
|
||||
<directory name="stubs" />
|
||||
</errorLevel>
|
||||
</InvalidReturnType>
|
||||
</issueHandlers>
|
||||
</psalm>
|
@ -5,7 +5,7 @@ declare(strict_types=1);
|
||||
namespace OCA\GPodderSync\Core\EpisodeAction;
|
||||
|
||||
/**
|
||||
* @psalm-type EpisodeActionType = array{
|
||||
* @phpstan-type EpisodeActionType = array{
|
||||
* podcast: string,
|
||||
* episode: string,
|
||||
* action: string,
|
||||
|
@ -5,7 +5,7 @@ declare(strict_types=1);
|
||||
namespace OCA\GPodderSync\Core\PodcastData;
|
||||
|
||||
/**
|
||||
* @psalm-type PodcastActionCountsType = array{
|
||||
* @phpstan-type PodcastActionCountsType = array{
|
||||
* delete: int,
|
||||
* download: int,
|
||||
* flattr: int,
|
||||
|
@ -5,7 +5,7 @@ declare(strict_types=1);
|
||||
namespace OCA\GPodderSync\Core\PodcastData;
|
||||
|
||||
/**
|
||||
* @psalm-type PodcastDataType = array{
|
||||
* @phpstan-type PodcastDataType = array{
|
||||
* title: ?string,
|
||||
* author: ?string,
|
||||
* link: ?string,
|
||||
|
@ -5,7 +5,7 @@ declare(strict_types=1);
|
||||
namespace OCA\GPodderSync\Core\PodcastData;
|
||||
|
||||
/**
|
||||
* @psalm-type PodcastMetricsType = array{
|
||||
* @phpstan-type PodcastMetricsType = array{
|
||||
* url: string,
|
||||
* listenedSeconds: int,
|
||||
* actionCounts: PodcastActionCounts
|
||||
|
@ -8,7 +8,7 @@ use OCA\GPodderSync\Core\EpisodeAction\EpisodeAction;
|
||||
use OCP\AppFramework\Db\Entity;
|
||||
|
||||
/**
|
||||
* @psalm-import-type EpisodeActionType from EpisodeAction
|
||||
* @phpstan-import-type EpisodeActionType from EpisodeAction
|
||||
*
|
||||
* @method string getPodcast()
|
||||
* @method void setPodcast(string $podcast)
|
||||
|
Loading…
x
Reference in New Issue
Block a user