1+ <?php
2+ /**
3+ * Created by PhpStorm.
4+ * User:
5+ * Date: 2021/5/7
6+ * Time: 10:40 AM
7+ */
8+
9+ /**
10+ * 读git diff v_10_3 master | grep -E 'diff --git|@@' > result.txt 处理之后的文件,将结果封装成数组 key=》文件名 value=》新增的行
11+ *
12+ */
13+ namespace SebastianBergmann \CodeCoverage ;
14+ class Diff
15+ {
16+ private $ result = [];
17+
18+
19+ function main ()
20+ {
21+ $ fileContent = $ this ->getTxtcontent ("RESULT_FILE " );
22+ array_walk ($ fileContent , function (&$ item ) {
23+ if (strpos ($ item , 'diff ' ) !== false ) {
24+ $ fileName = explode (' ' , $ item )[3 ];
25+ $ fileName = str_replace ("b/ " , "" , $ fileName );
26+ $ this ->result ["PROJECT_ABS_PATH " . "/ " . $ fileName ] = [];
27+ } else {
28+ /**
29+ * 取result最后一个元素 放到value里面去
30+ */
31+ //@@ -0,0 +1,19 @@
32+ $ and = explode (' ' , $ item )[2 ];
33+ $ beginLine = explode (', ' , $ and )[0 ];
34+ $ beginLine = str_replace ("+ " , "" , $ beginLine );
35+ $ count = explode (', ' , $ and )[1 ];
36+ end ($ this ->result );
37+ $ key = key ($ this ->result );
38+ $ valueArray = $ this ->result [$ key ];
39+ for ($ i = $ beginLine ; $ i <= $ beginLine + $ count ; $ i ++) {
40+ $ valueArray [$ i ] = 1 ;
41+ }
42+ /**
43+ * 根据实际情况 是都需要替换成自己的项目目录
44+ */
45+ if (strpos ($ key , '/project ' ) !== false ) {
46+ $ this ->result [$ key ] = $ valueArray ;
47+ } else {
48+ $ this ->result ["PROJECT_ABS_PATH " . "/ " . $ key ] = $ valueArray ;
49+ }
50+ }
51+ });
52+
53+ print_r ($ this ->result );
54+ return $ this ->result ;
55+ }
56+
57+ /*
58+ * 逐行读取TXT文件
59+ */
60+ function getTxtcontent ($ txtfile )
61+ {
62+ $ file = @fopen ($ txtfile , 'r ' );
63+ $ content = array ();
64+ if (!$ file ) {
65+ return 'file open fail ' ;
66+ } else {
67+ $ i = 0 ;
68+ while (!feof ($ file )) {
69+ $ content [$ i ] = mb_convert_encoding (fgets ($ file ), "UTF-8 " , "GBK,ASCII,ANSI,UTF-8 " );
70+ $ i ++;
71+ }
72+ fclose ($ file );
73+ $ content = array_filter ($ content ); //数组去空
74+ }
75+ // print_r($content);
76+ return $ content ;
77+ }
78+
79+ }
80+
81+ $ d = new Diff ();
82+ $ d ->main ();
0 commit comments