From 209356628c7faa034a1e4b3f18eaf51c4d394ec1 Mon Sep 17 00:00:00 2001 From: nicolaasuni Date: Wed, 11 Oct 2023 15:45:12 +0100 Subject: [PATCH] Enable phpstan linter at level 5 --- .github/workflows/check.yml | 21 +------------------ .../2e9429128fa58a6acdfa45787249cfb3 | 1 + .../3d9c34edfb5738f222d5a0ebfb9c7617 | 1 + .../460d68986a7c9e84830a3e026cf5562c | 1 + .../ac250b6bbb183d092681f4723b98ca24 | 1 + .../c42fdd8dc543140b79142032117b82ff | 1 + .phpunit.cache/test-results | 1 + Makefile | 5 +++++ VERSION | 2 +- phpstan.neon | 10 +++++++++ resources/debian/control | 2 +- resources/rpm/rpm.spec | 2 +- src/Parser.php | 7 +++---- src/Process/XrefStream.php | 3 +-- 14 files changed, 29 insertions(+), 29 deletions(-) create mode 100644 .phpunit.cache/code-coverage/2e9429128fa58a6acdfa45787249cfb3 create mode 100644 .phpunit.cache/code-coverage/3d9c34edfb5738f222d5a0ebfb9c7617 create mode 100644 .phpunit.cache/code-coverage/460d68986a7c9e84830a3e026cf5562c create mode 100644 .phpunit.cache/code-coverage/ac250b6bbb183d092681f4723b98ca24 create mode 100644 .phpunit.cache/code-coverage/c42fdd8dc543140b79142032117b82ff create mode 100644 .phpunit.cache/test-results create mode 100644 phpstan.neon diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 699127d..aa68ef4 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -52,7 +52,7 @@ jobs: path: ~/.composer/cache/ key: composer-cache - name: Install dependencies - run: composer install --no-interaction + run: make deps - name: Run all tests run: make qa - name: Send coverage @@ -60,22 +60,3 @@ jobs: with: flags: php-${{ matrix.php-version }}-${{ matrix.os }} name: php-${{ matrix.php-version }}-${{ matrix.os }} - - static-analysis: - name: Static Analysis - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Use php 8.2 - uses: shivammathur/setup-php@v2 - with: - php-version: 8.2 - - name: Cache module - uses: actions/cache@v3 - with: - path: ~/.composer/cache/ - key: composer-cache - - name: Install phpstan - run: composer require --dev phpstan/phpstan - - name: Analyse files - run: ./vendor/bin/phpstan analyse src test diff --git a/.phpunit.cache/code-coverage/2e9429128fa58a6acdfa45787249cfb3 b/.phpunit.cache/code-coverage/2e9429128fa58a6acdfa45787249cfb3 new file mode 100644 index 0000000..bfe26b4 --- /dev/null +++ b/.phpunit.cache/code-coverage/2e9429128fa58a6acdfa45787249cfb3 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:29:"Com\Tecnick\Pdf\Parser\Parser";a:6:{s:4:"name";s:6:"Parser";s:14:"namespacedName";s:29:"Com\Tecnick\Pdf\Parser\Parser";s:9:"namespace";s:22:"Com\Tecnick\Pdf\Parser";s:9:"startLine";i:34;s:7:"endLine";i:278;s:7:"methods";a:9:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:17:"__construct($cfg)";s:10:"visibility";s:6:"public";s:9:"startLine";i:52;s:7:"endLine";i:57;s:3:"ccn";i:2;}s:5:"parse";a:6:{s:10:"methodName";s:5:"parse";s:9:"signature";s:12:"parse($data)";s:10:"visibility";s:6:"public";s:9:"startLine";i:64;s:7:"endLine";i:88;s:3:"ccn";i:6;}s:17:"getIndirectObject";a:6:{s:10:"methodName";s:17:"getIndirectObject";s:9:"signature";s:47:"getIndirectObject($obj_ref, $offset, $decoding)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:99;s:7:"endLine";i:119;s:3:"ccn";i:5;}s:20:"getRawIndirectObject";a:6:{s:10:"methodName";s:20:"getRawIndirectObject";s:9:"signature";s:40:"getRawIndirectObject($offset, $decoding)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:129;s:7:"endLine";i:155;s:3:"ccn";i:6;}s:12:"getObjectVal";a:6:{s:10:"methodName";s:12:"getObjectVal";s:9:"signature";s:18:"getObjectVal($obj)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:164;s:7:"endLine";i:178;s:3:"ccn";i:4;}s:12:"decodeStream";a:6:{s:10:"methodName";s:12:"decodeStream";s:9:"signature";s:28:"decodeStream($sdic, $stream)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:188;s:7:"endLine";i:207;s:3:"ccn";i:9;}s:23:"getDeclaredStreamLength";a:6:{s:10:"methodName";s:23:"getDeclaredStreamLength";s:9:"signature";s:55:"getDeclaredStreamLength($stream, $slength, $sdic, $key)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:217;s:7:"endLine";i:225;s:3:"ccn";i:2;}s:10:"getFilters";a:6:{s:10:"methodName";s:10:"getFilters";s:9:"signature";s:33:"getFilters($filters, $sdic, $key)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:236;s:7:"endLine";i:252;s:3:"ccn";i:5;}s:16:"getDecodedStream";a:6:{s:10:"methodName";s:16:"getDecodedStream";s:9:"signature";s:35:"getDecodedStream($filters, $stream)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:262;s:7:"endLine";i:277;s:3:"ccn";i:3;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:279;s:18:"commentLinesOfCode";i:126;s:21:"nonCommentLinesOfCode";i:153;}s:15:"ignoredLinesFor";a:1:{i:0;i:34;}s:17:"executableLinesIn";a:78:{i:54;i:3;i:55;i:4;i:66;i:5;i:67;i:6;i:70;i:7;i:71;i:8;i:74;i:9;i:76;i:10;i:78;i:11;i:79;i:12;i:80;i:13;i:82;i:14;i:86;i:15;i:87;i:16;i:101;i:17;i:102;i:18;i:103;i:19;i:105;i:20;i:107;i:21;i:108;i:22;i:109;i:23;i:110;i:24;i:112;i:25;i:116;i:26;i:118;i:27;i:132;i:28;i:133;i:29;i:150;i:30;i:135;i:31;i:137;i:32;i:138;i:33;i:141;i:34;i:142;i:35;i:143;i:36;i:144;i:37;i:146;i:38;i:148;i:39;i:149;i:40;i:152;i:41;i:154;i:42;i:166;i:43;i:168;i:44;i:170;i:45;i:171;i:46;i:173;i:47;i:174;i:48;i:177;i:49;i:191;i:50;i:192;i:51;i:193;i:52;i:195;i:53;i:196;i:54;i:197;i:55;i:198;i:56;i:200;i:57;i:201;i:58;i:202;i:59;i:206;i:60;i:220;i:61;i:221;i:62;i:222;i:63;i:223;i:64;i:239;i:65;i:240;i:66;i:242;i:67;i:243;i:68;i:245;i:69;i:246;i:70;i:247;i:71;i:251;i:72;i:265;i:73;i:267;i:74;i:268;i:75;i:269;i:76;i:270;i:77;i:271;i:78;i:273;i:79;i:276;i:80;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/3d9c34edfb5738f222d5a0ebfb9c7617 b/.phpunit.cache/code-coverage/3d9c34edfb5738f222d5a0ebfb9c7617 new file mode 100644 index 0000000..2820436 --- /dev/null +++ b/.phpunit.cache/code-coverage/3d9c34edfb5738f222d5a0ebfb9c7617 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:35:"Com\Tecnick\Pdf\Parser\Process\Xref";a:6:{s:4:"name";s:4:"Xref";s:14:"namespacedName";s:35:"Com\Tecnick\Pdf\Parser\Process\Xref";s:9:"namespace";s:30:"Com\Tecnick\Pdf\Parser\Process";s:9:"startLine";i:34;s:7:"endLine";i:310;s:7:"methods";a:6:{s:17:"getIndirectObject";a:6:{s:10:"methodName";s:17:"getIndirectObject";s:9:"signature";s:47:"getIndirectObject($obj_ref, $offset, $decoding)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:51;s:7:"endLine";i:51;s:3:"ccn";i:0;}s:11:"getXrefData";a:6:{s:10:"methodName";s:11:"getXrefData";s:9:"signature";s:27:"getXrefData($offset, $xref)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:61;s:7:"endLine";i:114;s:3:"ccn";i:9;}s:10:"decodeXref";a:6:{s:10:"methodName";s:10:"decodeXref";s:9:"signature";s:29:"decodeXref($startxref, $xref)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:124;s:7:"endLine";i:173;s:3:"ccn";i:7;}s:14:"getTrailerData";a:6:{s:10:"methodName";s:14:"getTrailerData";s:9:"signature";s:31:"getTrailerData($xref, $matches)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:183;s:7:"endLine";i:213;s:3:"ccn";i:9;}s:16:"decodeXrefStream";a:6:{s:10:"methodName";s:16:"decodeXrefStream";s:9:"signature";s:35:"decodeXrefStream($startxref, $xref)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:223;s:7:"endLine";i:278;s:3:"ccn";i:9;}s:12:"processDdata";a:6:{s:10:"methodName";s:12:"processDdata";s:9:"signature";s:34:"processDdata($sdata, $ddata, $wbt)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:287;s:7:"endLine";i:309;s:3:"ccn";i:6;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:311;s:18:"commentLinesOfCode";i:119;s:21:"nonCommentLinesOfCode";i:192;}s:15:"ignoredLinesFor";a:1:{i:0;i:34;}s:17:"executableLinesIn";a:119:{i:63;i:4;i:64;i:5;i:66;i:6;i:67;i:7;i:70;i:8;i:71;i:8;i:72;i:8;i:73;i:8;i:74;i:8;i:75;i:8;i:76;i:8;i:78;i:9;i:80;i:10;i:81;i:11;i:82;i:12;i:84;i:13;i:85;i:14;i:87;i:15;i:89;i:16;i:90;i:16;i:91;i:16;i:92;i:16;i:93;i:16;i:94;i:16;i:95;i:16;i:98;i:17;i:100;i:18;i:103;i:19;i:105;i:20;i:108;i:21;i:110;i:22;i:111;i:23;i:113;i:24;i:126;i:26;i:134;i:27;i:136;i:28;i:139;i:29;i:140;i:29;i:141;i:29;i:142;i:29;i:143;i:29;i:144;i:29;i:145;i:29;i:147;i:30;i:149;i:31;i:151;i:32;i:152;i:33;i:154;i:34;i:156;i:35;i:158;i:36;i:160;i:37;i:161;i:38;i:162;i:39;i:165;i:40;i:169;i:41;i:170;i:42;i:172;i:43;i:185;i:44;i:186;i:45;i:188;i:46;i:190;i:47;i:191;i:48;i:193;i:49;i:194;i:50;i:196;i:51;i:197;i:52;i:199;i:53;i:200;i:54;i:202;i:55;i:203;i:56;i:204;i:57;i:205;i:58;i:208;i:59;i:210;i:60;i:212;i:61;i:226;i:63;i:227;i:64;i:228;i:65;i:230;i:66;i:231;i:67;i:233;i:68;i:235;i:69;i:236;i:70;i:238;i:71;i:239;i:72;i:240;i:73;i:241;i:74;i:242;i:75;i:244;i:76;i:245;i:77;i:246;i:78;i:247;i:79;i:249;i:80;i:251;i:81;i:253;i:82;i:255;i:83;i:257;i:84;i:259;i:85;i:260;i:86;i:262;i:87;i:263;i:88;i:264;i:89;i:266;i:90;i:267;i:91;i:269;i:92;i:271;i:93;i:273;i:94;i:275;i:95;i:277;i:96;i:290;i:97;i:292;i:98;i:293;i:99;i:295;i:100;i:297;i:101;i:299;i:102;i:301;i:103;i:302;i:104;i:303;i:105;i:305;i:106;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/460d68986a7c9e84830a3e026cf5562c b/.phpunit.cache/code-coverage/460d68986a7c9e84830a3e026cf5562c new file mode 100644 index 0000000..d0eda00 --- /dev/null +++ b/.phpunit.cache/code-coverage/460d68986a7c9e84830a3e026cf5562c @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:32:"Com\Tecnick\Pdf\Parser\Exception";a:6:{s:4:"name";s:9:"Exception";s:14:"namespacedName";s:32:"Com\Tecnick\Pdf\Parser\Exception";s:9:"namespace";s:22:"Com\Tecnick\Pdf\Parser";s:9:"startLine";i:32;s:7:"endLine";i:34;s:7:"methods";a:0:{}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:35;s:18:"commentLinesOfCode";i:26;s:21:"nonCommentLinesOfCode";i:9;}s:15:"ignoredLinesFor";a:1:{i:0;i:32;}s:17:"executableLinesIn";a:0:{}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/ac250b6bbb183d092681f4723b98ca24 b/.phpunit.cache/code-coverage/ac250b6bbb183d092681f4723b98ca24 new file mode 100644 index 0000000..11032d6 --- /dev/null +++ b/.phpunit.cache/code-coverage/ac250b6bbb183d092681f4723b98ca24 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:41:"Com\Tecnick\Pdf\Parser\Process\XrefStream";a:6:{s:4:"name";s:10:"XrefStream";s:14:"namespacedName";s:41:"Com\Tecnick\Pdf\Parser\Process\XrefStream";s:9:"namespace";s:30:"Com\Tecnick\Pdf\Parser\Process";s:9:"startLine";i:34;s:7:"endLine";i:307;s:7:"methods";a:8:{s:17:"processObjIndexes";a:6:{s:10:"methodName";s:17:"processObjIndexes";s:9:"signature";s:42:"processObjIndexes($xref, $obj_num, $sdata)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:43;s:7:"endLine";i:73;s:3:"ccn";i:7;}s:14:"pngUnpredictor";a:6:{s:10:"methodName";s:14:"pngUnpredictor";s:9:"signature";s:51:"pngUnpredictor($sdata, $ddata, $columns, $prev_row)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:83;s:7:"endLine";i:131;s:3:"ccn";i:10;}s:11:"minDistance";a:6:{s:10:"methodName";s:11:"minDistance";s:9:"signature";s:76:"minDistance($ddata, $key, $row, $idx, $jdx, $row_left, $row_up, $row_upleft)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:144;s:7:"endLine";i:164;s:3:"ccn";i:4;}s:15:"processXrefType";a:6:{s:10:"methodName";s:15:"processXrefType";s:9:"signature";s:96:"processXrefType($sarr, $xref, $wbt, $index_first, $prevxref, $columns, $valid_crs, $filltrailer)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:178;s:7:"endLine";i:217;s:3:"ccn";i:9;}s:15:"processXrefPrev";a:6:{s:10:"methodName";s:15:"processXrefPrev";s:9:"signature";s:39:"processXrefPrev($sarr, $key, $prevxref)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:227;s:7:"endLine";i:233;s:3:"ccn";i:2;}s:22:"processXrefDecodeParms";a:6:{s:10:"methodName";s:22:"processXrefDecodeParms";s:9:"signature";s:45:"processXrefDecodeParms($sarr, $key, $columns)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:242;s:7:"endLine";i:251;s:3:"ccn";i:5;}s:17:"processXrefTypeFt";a:6:{s:10:"methodName";s:17:"processXrefTypeFt";s:9:"signature";s:58:"processXrefTypeFt($type, $sarr, $key, $xref, $filltrailer)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:261;s:7:"endLine";i:281;s:3:"ccn";i:6;}s:17:"processXrefObjref";a:6:{s:10:"methodName";s:17:"processXrefObjref";s:9:"signature";s:44:"processXrefObjref($type, $sarr, $key, $xref)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:290;s:7:"endLine";i:306;s:3:"ccn";i:6;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:308;s:18:"commentLinesOfCode";i:122;s:21:"nonCommentLinesOfCode";i:186;}s:15:"ignoredLinesFor";a:1:{i:0;i:34;}s:17:"executableLinesIn";a:110:{i:45;i:1;i:46;i:2;i:47;i:3;i:49;i:4;i:50;i:5;i:53;i:6;i:55;i:7;i:57;i:8;i:59;i:9;i:60;i:10;i:64;i:11;i:65;i:12;i:66;i:13;i:69;i:14;i:71;i:15;i:86;i:16;i:88;i:17;i:90;i:18;i:92;i:19;i:94;i:20;i:95;i:21;i:96;i:22;i:97;i:23;i:98;i:24;i:100;i:25;i:101;i:26;i:104;i:27;i:106;i:28;i:107;i:29;i:108;i:30;i:110;i:31;i:111;i:32;i:112;i:33;i:114;i:34;i:115;i:35;i:116;i:36;i:118;i:37;i:119;i:38;i:120;i:39;i:122;i:40;i:123;i:41;i:126;i:42;i:129;i:43;i:147;i:44;i:149;i:45;i:150;i:46;i:151;i:47;i:152;i:48;i:154;i:49;i:155;i:50;i:156;i:51;i:157;i:52;i:158;i:53;i:159;i:54;i:160;i:55;i:161;i:56;i:162;i:57;i:188;i:58;i:189;i:59;i:190;i:60;i:192;i:61;i:193;i:62;i:194;i:63;i:195;i:64;i:196;i:65;i:198;i:66;i:201;i:67;i:202;i:68;i:203;i:69;i:204;i:70;i:205;i:71;i:207;i:72;i:208;i:73;i:209;i:74;i:210;i:75;i:211;i:76;i:212;i:77;i:213;i:78;i:215;i:79;i:229;i:80;i:231;i:81;i:244;i:82;i:245;i:83;i:246;i:84;i:247;i:85;i:248;i:86;i:263;i:87;i:264;i:88;i:267;i:89;i:268;i:90;i:269;i:91;i:271;i:92;i:272;i:93;i:273;i:94;i:274;i:95;i:275;i:96;i:276;i:97;i:278;i:98;i:279;i:99;i:292;i:100;i:293;i:101;i:296;i:102;i:297;i:103;i:298;i:104;i:299;i:105;i:300;i:106;i:301;i:107;i:302;i:108;i:303;i:109;i:304;i:110;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/c42fdd8dc543140b79142032117b82ff b/.phpunit.cache/code-coverage/c42fdd8dc543140b79142032117b82ff new file mode 100644 index 0000000..6068fbd --- /dev/null +++ b/.phpunit.cache/code-coverage/c42fdd8dc543140b79142032117b82ff @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:40:"Com\Tecnick\Pdf\Parser\Process\RawObject";a:6:{s:4:"name";s:9:"RawObject";s:14:"namespacedName";s:40:"Com\Tecnick\Pdf\Parser\Process\RawObject";s:9:"namespace";s:30:"Com\Tecnick\Pdf\Parser\Process";s:9:"startLine";i:34;s:7:"endLine";i:344;s:7:"methods";a:7:{s:12:"getRawObject";a:6:{s:10:"methodName";s:12:"getRawObject";s:9:"signature";s:21:"getRawObject($offset)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:57;s:7:"endLine";i:98;s:3:"ccn";i:5;}s:14:"processSolidus";a:6:{s:10:"methodName";s:14:"processSolidus";s:9:"signature";s:49:"processSolidus($char, $offset, $objtype, $objval)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:109;s:7:"endLine";i:123;s:3:"ccn";i:2;}s:18:"processParenthesis";a:6:{s:10:"methodName";s:18:"processParenthesis";s:9:"signature";s:53:"processParenthesis($char, $offset, $objtype, $objval)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:134;s:7:"endLine";i:166;s:3:"ccn";i:7;}s:14:"processBracket";a:6:{s:10:"methodName";s:14:"processBracket";s:9:"signature";s:49:"processBracket($char, $offset, $objtype, $objval)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:177;s:7:"endLine";i:194;s:3:"ccn";i:2;}s:14:"processAngular";a:6:{s:10:"methodName";s:14:"processAngular";s:9:"signature";s:49:"processAngular($char, $offset, $objtype, $objval)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:204;s:7:"endLine";i:241;s:3:"ccn";i:7;}s:18:"processDefaultName";a:6:{s:10:"methodName";s:18:"processDefaultName";s:9:"signature";s:46:"processDefaultName($offset, $objtype, $objval)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:252;s:7:"endLine";i:304;s:3:"ccn";i:9;}s:14:"processDefault";a:6:{s:10:"methodName";s:14:"processDefault";s:9:"signature";s:42:"processDefault($offset, $objtype, $objval)";s:10:"visibility";s:9:"protected";s:9:"startLine";i:313;s:7:"endLine";i:343;s:3:"ccn";i:4;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:345;s:18:"commentLinesOfCode";i:137;s:21:"nonCommentLinesOfCode";i:208;}s:15:"ignoredLinesFor";a:1:{i:0;i:34;}s:17:"executableLinesIn";a:144:{i:59;i:3;i:60;i:4;i:68;i:5;i:70;i:6;i:71;i:7;i:73;i:8;i:74;i:9;i:75;i:10;i:76;i:11;i:80;i:12;i:81;i:12;i:82;i:12;i:83;i:12;i:84;i:12;i:85;i:12;i:86;i:12;i:87;i:12;i:88;i:12;i:89;i:13;i:90;i:14;i:91;i:15;i:93;i:16;i:94;i:17;i:97;i:18;i:111;i:19;i:112;i:20;i:114;i:21;i:115;i:21;i:116;i:21;i:117;i:21;i:118;i:21;i:120;i:22;i:121;i:23;i:136;i:24;i:137;i:25;i:138;i:26;i:139;i:27;i:140;i:28;i:141;i:29;i:142;i:30;i:143;i:31;i:145;i:32;i:147;i:33;i:150;i:34;i:151;i:35;i:152;i:36;i:154;i:37;i:155;i:38;i:156;i:39;i:158;i:40;i:159;i:41;i:161;i:42;i:163;i:43;i:164;i:44;i:180;i:45;i:181;i:46;i:182;i:47;i:184;i:48;i:190;i:49;i:187;i:50;i:188;i:51;i:189;i:52;i:192;i:53;i:206;i:54;i:208;i:55;i:209;i:56;i:210;i:57;i:212;i:58;i:218;i:59;i:215;i:60;i:216;i:61;i:217;i:62;i:220;i:63;i:224;i:64;i:225;i:65;i:227;i:66;i:228;i:67;i:229;i:67;i:230;i:67;i:231;i:67;i:232;i:67;i:235;i:68;i:236;i:69;i:237;i:70;i:238;i:71;i:254;i:72;i:255;i:73;i:257;i:74;i:258;i:75;i:259;i:76;i:260;i:77;i:262;i:78;i:263;i:79;i:264;i:80;i:265;i:81;i:266;i:82;i:268;i:83;i:269;i:84;i:270;i:85;i:271;i:86;i:272;i:87;i:274;i:88;i:275;i:89;i:276;i:90;i:277;i:91;i:278;i:92;i:280;i:93;i:281;i:94;i:282;i:95;i:283;i:96;i:285;i:97;i:286;i:97;i:287;i:97;i:288;i:97;i:289;i:97;i:290;i:97;i:292;i:98;i:293;i:99;i:296;i:100;i:297;i:101;i:299;i:102;i:300;i:103;i:301;i:104;i:303;i:105;i:316;i:106;i:317;i:106;i:318;i:106;i:319;i:106;i:320;i:106;i:323;i:107;i:324;i:108;i:325;i:109;i:327;i:110;i:328;i:110;i:329;i:110;i:330;i:110;i:331;i:110;i:334;i:111;i:335;i:112;i:336;i:113;i:337;i:114;i:339;i:115;i:340;i:116;i:341;i:117;}} \ No newline at end of file diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results new file mode 100644 index 0000000..55cb870 --- /dev/null +++ b/.phpunit.cache/test-results @@ -0,0 +1 @@ +{"version":1,"defects":[],"times":{"Test\\ParserTest::testParse#0":0.095,"Test\\ParserTest::testParse#1":0.004,"Test\\ParserTest::testParse#2":0.003}} \ No newline at end of file diff --git a/Makefile b/Makefile index e8ea062..f093fb2 100644 --- a/Makefile +++ b/Makefile @@ -163,6 +163,8 @@ endif deps: ensuretarget rm -rf ./vendor/* ($(COMPOSER) install -vvv --no-interaction) + curl --silent --show-error --fail --location --output ./vendor/phpstan.phar https://github.com/phpstan/phpstan/releases/download/1.10.38/phpstan.phar \ + && chmod +x ./vendor/phpstan.phar # Generate source code documentation .PHONY: doc @@ -205,6 +207,7 @@ lint: ./vendor/bin/phpcs --ignore="./vendor/" --standard=phpcs.xml src test ./vendor/bin/phpmd src text codesize,unusedcode,naming,design --exclude vendor ./vendor/bin/phpmd test text unusedcode,naming,design + php -r 'exit((int)version_compare(PHP_MAJOR_VERSION, "7", ">"));' || ./vendor/phpstan.phar analyse # Run all tests and reports .PHONY: qa @@ -250,6 +253,8 @@ tag: # Run unit tests .PHONY: test test: + cp phpunit.xml.dist phpunit.xml + ./vendor/bin/phpunit --migrate-configuration || true ./vendor/bin/phpunit test # Remove all installed files diff --git a/VERSION b/VERSION index 11a0d85..05cfbc0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.4.26 +2.4.27 diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..c42b364 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,10 @@ +parameters: + level: 5 + paths: + - src + - test + scanDirectories: + - vendor + ignoreErrors: + reportUnmatchedIgnoredErrors: false + treatPhpDocTypesAsCertain: false diff --git a/resources/debian/control b/resources/debian/control index bcc6550..06eec96 100644 --- a/resources/debian/control +++ b/resources/debian/control @@ -10,6 +10,6 @@ Vcs-Git: https://github.com/~#VENDOR#~/~#PROJECT#~.git Package: ~#PKGNAME#~ Provides: php-~#PROJECT#~ Architecture: all -Depends: php (>= 5.4.0), php-tecnickcom-tc-lib-pdf-filter (<< 2.0.0), php-tecnickcom-tc-lib-pdf-filter (>= 1.4.30), ${misc:Depends} +Depends: php (>= 5.4.0), php-tecnickcom-tc-lib-pdf-filter (<< 2.0.0), php-tecnickcom-tc-lib-pdf-filter (>= 1.4.31), ${misc:Depends} Description: PHP PDF Parser Library PHP library to parse PDF documents. diff --git a/resources/rpm/rpm.spec b/resources/rpm/rpm.spec index 4079d13..1eeda4d 100644 --- a/resources/rpm/rpm.spec +++ b/resources/rpm/rpm.spec @@ -18,7 +18,7 @@ BuildArch: noarch Requires: php(language) >= 5.4.0 Requires: php-composer(%{c_vendor}/tc-lib-pdf-filter) < 2.0.0 -Requires: php-composer(%{c_vendor}/tc-lib-pdf-filter) >= 1.4.30 +Requires: php-composer(%{c_vendor}/tc-lib-pdf-filter) >= 1.4.31 Requires: php-pcre Provides: php-composer(%{c_vendor}/%{gh_project}) = %{version} diff --git a/src/Parser.php b/src/Parser.php index 95918b7..1ea82db 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -99,8 +99,8 @@ public function parse($data) protected function getIndirectObject($obj_ref, $offset = 0, $decoding = true) { $obj = explode('_', $obj_ref); - if (($obj === false) || (count($obj) != 2)) { - throw new PPException('Invalid object reference: ' . $obj); + if (($obj == false) || (count($obj) != 2)) { + throw new PPException('Invalid object reference: ' . serialize($obj)); } $objref = $obj[0] . ' ' . $obj[1] . ' obj'; // ignore leading zeros @@ -121,7 +121,6 @@ protected function getIndirectObject($obj_ref, $offset = 0, $decoding = true) /** * Get content of indirect object. * - * @param string $obj_ref Object number and generation number separated by underscore character. * @param int $offset Object offset. * @param bool $decoding If true decode streams. * @@ -158,7 +157,7 @@ protected function getRawIndirectObject($offset, $decoding) /** * Get the content of object, resolving indect object reference if necessary. * - * @param string $obj Object value. + * @param array $obj Object value. * * @return array Object data. */ diff --git a/src/Process/XrefStream.php b/src/Process/XrefStream.php index 0164b92..726bc88 100644 --- a/src/Process/XrefStream.php +++ b/src/Process/XrefStream.php @@ -78,7 +78,7 @@ protected function processObjIndexes(&$xref, &$obj_num, $sdata) * @param array $sdata * @param array $ddata * @param int $columns - * @param int $prev_row + * @param array $prev_row */ protected function pngUnpredictor($sdata, &$ddata, $columns, $prev_row) { @@ -124,7 +124,6 @@ protected function pngUnpredictor($sdata, &$ddata, $columns, $prev_row) default: // PNG prediction (on encoding, PNG optimum) throw new PPException('Unknown PNG predictor'); - break; } } $prev_row = $ddata[$key];