diff options
| author | 2024-01-15 10:36:30 +0100 | |
|---|---|---|
| committer | 2024-01-15 10:36:30 +0100 | |
| commit | 314077a457f04cc2f0472e036af029e2676fbf02 (patch) | |
| tree | 1f38bb78761a56b8ee2034caba0dbda3912ef7c1 /app/Models | |
| parent | 52f6c8399b41e0c8be49dd56c89f451843189791 (diff) | |
PHPStan prepare exceptions (#6037)
Take advantage of
https://phpstan.org/blog/bring-your-exceptions-under-control
Minimum changes to pass `tooWideThrowType` and `implicitThrows`.
Revert some mistakes from:
https://github.com/FreshRSS/FreshRSS/pull/5504
Preparation needed before new PRs of the same type:
https://github.com/FreshRSS/FreshRSS/pull/5962
Fix several wrong PHPDocs and catches:
> Method ... has ...Exception in PHPDoc @throws tag but it's not thrown.
> Dead catch - ...Exception is never thrown in the try block.
Diffstat (limited to 'app/Models')
| -rw-r--r-- | app/Models/CategoryDAO.php | 2 | ||||
| -rw-r--r-- | app/Models/Context.php | 7 | ||||
| -rw-r--r-- | app/Models/Entry.php | 3 | ||||
| -rw-r--r-- | app/Models/EntryDAO.php | 5 | ||||
| -rw-r--r-- | app/Models/Feed.php | 27 | ||||
| -rw-r--r-- | app/Models/FeedDAO.php | 1 | ||||
| -rw-r--r-- | app/Models/UserQuery.php | 6 |
7 files changed, 31 insertions, 20 deletions
diff --git a/app/Models/CategoryDAO.php b/app/Models/CategoryDAO.php index a22cda420..020a5e2e2 100644 --- a/app/Models/CategoryDAO.php +++ b/app/Models/CategoryDAO.php @@ -101,7 +101,6 @@ class FreshRSS_CategoryDAO extends Minz_ModelPdo { /** * @param array{'name':string,'id'?:int,'kind'?:int,'lastUpdate'?:int,'error'?:int|bool,'attributes'?:string|array<string,mixed>} $valuesTmp * @return int|false - * @throws JsonException */ public function addCategory(array $valuesTmp) { // TRIM() to provide a type hint as text @@ -155,7 +154,6 @@ SQL; /** * @param array{'name':string,'kind':int,'attributes'?:array<string,mixed>|mixed|null} $valuesTmp * @return int|false - * @throws JsonException */ public function updateCategory(int $id, array $valuesTmp) { // No tag of the same name diff --git a/app/Models/Context.php b/app/Models/Context.php index bb6fa4cbd..2d22290bc 100644 --- a/app/Models/Context.php +++ b/app/Models/Context.php @@ -75,6 +75,9 @@ final class FreshRSS_Context { } } + /** + * @throws FreshRSS_Context_Exception + */ public static function &systemConf(): FreshRSS_SystemConfiguration { if (FreshRSS_Context::$system_conf === null) { throw new FreshRSS_Context_Exception('System configuration not initialised!'); @@ -88,7 +91,6 @@ final class FreshRSS_Context { /** * Initialize the context for the current user. - * @throws Minz_ConfigurationParamException */ public static function initUser(string $username = '', bool $userMustExist = true): void { FreshRSS_Context::$user_conf = null; @@ -153,6 +155,9 @@ final class FreshRSS_Context { } } + /** + * @throws FreshRSS_Context_Exception + */ public static function &userConf(): FreshRSS_UserConfiguration { if (FreshRSS_Context::$user_conf === null) { throw new FreshRSS_Context_Exception('User configuration not initialised!'); diff --git a/app/Models/Entry.php b/app/Models/Entry.php index 16f01483a..d3cfa07de 100644 --- a/app/Models/Entry.php +++ b/app/Models/Entry.php @@ -691,6 +691,7 @@ HTML; /** * @param array<string,mixed> $attributes + * @throws Minz_Exception */ public static function getContentByParsing(string $url, string $path, array $attributes = [], int $maxRedirs = 3): string { $cachePath = FreshRSS_Feed::cacheFilename($url, $attributes, FreshRSS_Feed::KIND_HTML_XPATH); @@ -741,7 +742,7 @@ HTML; $html = trim(sanitizeHTML($content, $base)); return $html; } else { - throw new Exception(); + throw new Minz_Exception(); } } diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php index b809c7475..abcc33a1a 100644 --- a/app/Models/EntryDAO.php +++ b/app/Models/EntryDAO.php @@ -1007,6 +1007,7 @@ SQL; /** * @param 'ASC'|'DESC' $order * @return array{0:array<int|string>,1:string} + * @throws FreshRSS_EntriesGetter_Exception */ protected function sqlListEntriesWhere(string $alias = '', ?FreshRSS_BooleanSearch $filters = null, int $state = FreshRSS_Entry::STATE_ALL, @@ -1059,6 +1060,7 @@ SQL; * @param int $id category/feed/tag ID * @param 'ASC'|'DESC' $order * @return array{0:array<int|string>,1:string} + * @throws FreshRSS_EntriesGetter_Exception */ private function sqlListWhere(string $type = 'a', int $id = 0, int $state = FreshRSS_Entry::STATE_ALL, string $order = 'DESC', int $limit = 1, string $firstId = '', ?FreshRSS_BooleanSearch $filters = null, @@ -1126,6 +1128,7 @@ SQL; * @param 'ASC'|'DESC' $order * @param int $id category/feed/tag ID * @return PDOStatement|false + * @throws FreshRSS_EntriesGetter_Exception */ private function listWhereRaw(string $type = 'a', int $id = 0, int $state = FreshRSS_Entry::STATE_ALL, string $order = 'DESC', int $limit = 1, string $firstId = '', ?FreshRSS_BooleanSearch $filters = null, @@ -1161,6 +1164,7 @@ SQL; * @param int $id category/feed/tag ID * @param 'ASC'|'DESC' $order * @return Traversable<FreshRSS_Entry> + * @throws FreshRSS_EntriesGetter_Exception */ public function listWhere(string $type = 'a', int $id = 0, int $state = FreshRSS_Entry::STATE_ALL, string $order = 'DESC', int $limit = 1, string $firstId = '', @@ -1226,6 +1230,7 @@ SQL; * @param int $id category/feed/tag ID * @param 'ASC'|'DESC' $order * @return array<numeric-string>|null + * @throws FreshRSS_EntriesGetter_Exception */ public function listIdsWhere(string $type = 'a', int $id = 0, int $state = FreshRSS_Entry::STATE_ALL, string $order = 'DESC', int $limit = 1, string $firstId = '', ?FreshRSS_BooleanSearch $filters = null): ?array { diff --git a/app/Models/Feed.php b/app/Models/Feed.php index 40e78bfeb..1de8258e8 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -65,6 +65,9 @@ class FreshRSS_Feed extends Minz_Model { private string $hubUrl = ''; private string $selfUrl = ''; + /** + * @throws FreshRSS_BadUrl_Exception + */ public function __construct(string $url, bool $validate = true) { if ($validate) { $this->_url($url); @@ -248,6 +251,9 @@ class FreshRSS_Feed extends Minz_Model { $this->id = $value; } + /** + * @throws FreshRSS_BadUrl_Exception + */ public function _url(string $value, bool $validate = true): void { $this->hash = ''; $url = $value; @@ -323,9 +329,16 @@ class FreshRSS_Feed extends Minz_Model { $this->nbEntries = $value; } + /** + * @throws Minz_FileNotExistException + * @throws FreshRSS_Feed_Exception + */ public function load(bool $loadDetails = false, bool $noCache = false): ?SimplePie { if ($this->url != '') { - // @phpstan-ignore-next-line + /** + * @phpstan-ignore-next-line + * @throws Minz_FileNotExistException + */ if (CACHE_PATH == '') { throw new Minz_FileNotExistException( 'CACHE_PATH', @@ -615,9 +628,6 @@ class FreshRSS_Feed extends Minz_Model { ]; } - /** - * @throws FreshRSS_Context_Exception - */ public function loadJson(): ?SimplePie { if ($this->url == '') { return null; @@ -654,9 +664,6 @@ class FreshRSS_Feed extends Minz_Model { return $this->simplePieFromContent($feedContent); } - /** - * @throws FreshRSS_Context_Exception - */ public function loadHtmlXpath(): ?SimplePie { if ($this->url == '') { return null; @@ -799,7 +806,6 @@ class FreshRSS_Feed extends Minz_Model { /** * @return int|null The max number of unread articles to keep, or null if disabled. - * @throws JsonException */ public function keepMaxUnread() { $keepMaxUnread = $this->attributeInt('keep_max_n_unread'); @@ -881,7 +887,10 @@ class FreshRSS_Feed extends Minz_Model { return false; } - /** @param array<string,mixed> $attributes */ + /** + * @param array<string,mixed> $attributes + * @throws FreshRSS_Context_Exception + */ public static function cacheFilename(string $url, array $attributes, int $kind = FreshRSS_Feed::KIND_RSS): string { $simplePie = customSimplePie($attributes); $filename = $simplePie->get_cache_filename($url); diff --git a/app/Models/FeedDAO.php b/app/Models/FeedDAO.php index 895d2d333..0744970de 100644 --- a/app/Models/FeedDAO.php +++ b/app/Models/FeedDAO.php @@ -37,7 +37,6 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo { * @param array{'url':string,'kind':int,'category':int,'name':string,'website':string,'description':string,'lastUpdate':int,'priority'?:int, * 'pathEntries'?:string,'httpAuth':string,'error':int|bool,'ttl'?:int,'attributes'?:string|array<string|mixed>} $valuesTmp * @return int|false - * @throws JsonException */ public function addFeed(array $valuesTmp) { $sql = 'INSERT INTO `_feed` (url, kind, category, name, website, description, `lastUpdate`, priority, `pathEntries`, `httpAuth`, error, ttl, attributes) diff --git a/app/Models/UserQuery.php b/app/Models/UserQuery.php index 85df49f1c..000cfbbdd 100644 --- a/app/Models/UserQuery.php +++ b/app/Models/UserQuery.php @@ -109,8 +109,6 @@ class FreshRSS_UserQuery { /** * Parse the query string when it is a "category" query - * - * @throws FreshRSS_DAO_Exception */ private function parseCategory(int $id): void { if ($this->category_dao === null) { @@ -127,8 +125,6 @@ class FreshRSS_UserQuery { /** * Parse the query string when it is a "feed" query - * - * @throws FreshRSS_DAO_Exception */ private function parseFeed(int $id): void { if ($this->feed_dao === null) { @@ -145,8 +141,6 @@ class FreshRSS_UserQuery { /** * Parse the query string when it is a "tag" query - * - * @throws FreshRSS_DAO_Exception */ private function parseTag(int $id): void { if ($this->tag_dao === null) { |
