| Conditions | 3 | 
| Paths | 3 | 
| Total Lines | 80 | 
| Code Lines | 70 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 1 | ||
| Bugs | 0 | Features | 0 | 
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php  | 
            ||
| 20 | public function execute()  | 
            ||
| 21 |     { | 
            ||
| 22 | $database = $this->getDatabase();  | 
            ||
| 23 | |||
| 24 | $query = $database->prepare(<<<'SQL'  | 
            ||
| 25 | select c.id, r.domain  | 
            ||
| 26 | from comment c  | 
            ||
| 27 | inner join request r on r.id = c.request  | 
            ||
| 28 | where (  | 
            ||
| 29 | 1 = 0  | 
            ||
| 30 | /* emails */  | 
            ||
| 31 | or c.comment rlike '[^ @]+(?<!accounts-enwiki-l|unblock|functionaries-en|checkuser-l|info-en|enwiki-acc-admins|/|\\()@(?!lists.wikimedia.org|wikimedia.org|wikipedia.org|[a-z][a-z]wiki)[a-z\\.]+'  | 
            ||
| 32 | -- or c.comment rlike 'gmail|yahoo' -- to many FPs  | 
            ||
| 33 | -- ipv4  | 
            ||
| 34 | OR c.comment rlike '[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]'  | 
            ||
| 35 | -- ipv6  | 
            ||
| 36 |     OR (lower(c.comment) rlike '[0-9a-f]{1,4}:[0-9a-f]{1,4}:[0-9a-f]{1,4}' and c.comment not rlike '[0-2]?[0-9]:[0-5][0-9]:[0-5][0-9]') | 
            ||
| 37 | -- card pan  | 
            ||
| 38 |     OR c.comment rlike '[0-9]{4} [0-9]{4} [0-9]{4} [0-9]{4}' | 
            ||
| 39 |     OR c.comment rlike '(?<!ticket|ticket#|OTRS|OTRS #) \\+?(?!20[0-2][0-9][01][0-9][0-3][0-9]100[0-9]{5})[0-9]{9,}' | 
            ||
| 40 | -- phone numbers  | 
            ||
| 41 | OR c.comment like '%mobile no%'  | 
            ||
| 42 | OR c.comment like '%contact no%'  | 
            ||
| 43 | OR c.comment like '%phone no%'  | 
            ||
| 44 | OR c.comment like '%cell no%'  | 
            ||
| 45 |     OR c.comment rlike '\\+[0-9]{1}[0-9 .-]{5}' | 
            ||
| 46 | OR c.comment rlike '(?:phone(?: )?:|mobile(?: )?:|cell(?: )?:)[ 0-9+]'  | 
            ||
| 47 | OR c.comment rlike '(^|\\s)(contact|phone|cell|mobile)( no| number| nbr)?( is)? ?:? ?[0-9+][0-9]+'  | 
            ||
| 48 |     OR c.comment rlike '[0-9]{3,} ?(ext|x)\\.? ?[0-9]{3,}' | 
            ||
| 49 | -- OR c.comment like '%telephone%' -- too many FP  | 
            ||
| 50 | |||
| 51 | -- requested passwords  | 
            ||
| 52 | OR c.comment like '%my password to be %'  | 
            ||
| 53 | OR c.comment like '% password be %'  | 
            ||
| 54 | OR c.comment rlike '(my )password (to |should )?(be|as)(?! soon| quickly|ap|\\?)'  | 
            ||
| 55 | OR c.comment rlike '(as )(my )?password(?! reset)'  | 
            ||
| 56 | OR c.comment rlike 'password(?: )?:'  | 
            ||
| 57 | |||
| 58 | -- holy FP craziness, but full of matches.  | 
            ||
| 59 | -- OR (c.comment rlike 'password' and c.user is null)  | 
            ||
| 60 | |||
| 61 | -- banking  | 
            ||
| 62 | OR c.comment rlike ' (a/c|acct) (no|number|nbr)( |\\.)'  | 
            ||
| 63 | -- OR c.comment rlike '(?<!requested|conflicting|similar) acct'  | 
            ||
| 64 | |||
| 65 | -- OR c.comment rlike ' card ' -- too many FP  | 
            ||
| 66 | -- OR c.comment like '% bank %' -- too many FP  | 
            ||
| 67 | |||
| 68 | -- all of these have too many FPs  | 
            ||
| 69 | -- or c.comment rlike '(?<!ip )(?<!email )(?<!e-mail )(?<!this )address(?!ed)'  | 
            ||
| 70 | -- OR c.comment rlike ' (ave|st(?!\\w)|road|rd(?!\\w))'  | 
            ||
| 71 | -- or c.comment rlike ' (road|street|avenue) '  | 
            ||
| 72 |     -- or (c.comment rlike '(^|\\s)[0-9]{5,}\\s' and c.user is null) | 
            ||
| 73 | -- or (c.comment rlike ' (?:Alabama|AL|Kentucky|KY|Ohio|Alaska|AK|Louisiana|LA|Oklahoma|Arizona|AZ|Maine|Oregon|Arkansas|AR|Maryland|MD|Pennsylvania|PA|Massachusetts|MA|California|CA|Michigan|MI|Rhode Island|RI|Colorado|Minnesota|MN|South Carolina|SC|Connecticut|CT|Mississippi|MS|South Dakota|SD|Delaware|DE|Missouri|MO|Tennessee|TN|DC|Montana|MT|Texas|TX|Florida|FL|Nebraska|NE|Georgia|GA|Nevada|NV|Utah|UT|New Hampshire|NH|Vermont|VT|Hawaii|New Jersey|NJ|Virginia|VA|Idaho|New Mexico|NM|Illinois|IL|New York|NY|Washington|WA|Indiana|North Carolina|NC|West Virginia|WV|Iowa|IA|North Dakota|ND|Wisconsin|WI|Kansas|KS|Wyoming|WY)(?: |\\.)' and c.user is null)  | 
            ||
| 74 | )  | 
            ||
| 75 | -- only find comments which haven't previously been flagged  | 
            ||
| 76 | and not exists (select 1 from log l where l.objectid = c.id and action = 'UnflaggedComment')  | 
            ||
| 77 | -- only comments on closed requests (give humans a chance to flag these)  | 
            ||
| 78 | and exists (select 1 from request r where r.id = c.request and r.status = 'Closed')  | 
            ||
| 79 | and c.flagged <> 1  | 
            ||
| 80 | -- not all edited comments have log entries (yay historical reasons!)  | 
            ||
| 81 | and c.comment not like '%[redacted]%'  | 
            ||
| 82 | ;  | 
            ||
| 83 | SQL  | 
            ||
| 84 | );  | 
            ||
| 85 | |||
| 86 | $success = $query->execute();  | 
            ||
| 87 | |||
| 88 |         if (!$success) { | 
            ||
| 89 |             throw new Exception('Error in transaction: Could not load data.'); | 
            ||
| 90 | }  | 
            ||
| 91 | |||
| 92 | $data = $query->fetchAll(PDO::FETCH_ASSOC);  | 
            ||
| 93 |         foreach ($data as $row) { | 
            ||
| 94 | /** @var Comment $dataObject */  | 
            ||
| 95 | $dataObject = Comment::getById($row['id'], $database);  | 
            ||
| 96 | |||
| 97 | Logger::flaggedComment($database, $dataObject, $row['domain']);  | 
            ||
| 98 | $dataObject->setFlagged(true);  | 
            ||
| 99 | $dataObject->save();  | 
            ||
| 100 | }  | 
            ||
| 102 | }  |