Conditions | 1 |
Paths | 1 |
Total Lines | 285 |
Lines | 0 |
Ratio | 0 % |
Changes | 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 |
||
228 | public function getAffectedUsagesByPageProvider() { |
||
229 | $labelUsage = EntityUsage::LABEL_USAGE; |
||
230 | $labelUsageDe = EntityUsage::LABEL_USAGE . '.de'; |
||
231 | $labelUsageEn = EntityUsage::LABEL_USAGE . '.en'; |
||
232 | |||
233 | $changeFactory = TestChanges::getEntityChangeFactory(); |
||
234 | |||
235 | $q1 = new ItemId( 'Q1' ); |
||
236 | $q2 = new ItemId( 'Q2' ); |
||
237 | |||
238 | $q1SitelinkUsage = new EntityUsage( $q1, EntityUsage::SITELINK_USAGE ); |
||
239 | $q2SitelinkUsage = new EntityUsage( $q2, EntityUsage::SITELINK_USAGE ); |
||
240 | $q2OtherUsage = new EntityUsage( $q2, EntityUsage::OTHER_USAGE ); |
||
241 | |||
242 | $q1LabelUsage_en = new EntityUsage( $q1, EntityUsage::LABEL_USAGE, 'en' ); |
||
243 | $q2LabelUsage = new EntityUsage( $q2, EntityUsage::LABEL_USAGE ); |
||
244 | $q2LabelUsage_en = new EntityUsage( $q2, EntityUsage::LABEL_USAGE, 'en' ); |
||
245 | $q2LabelUsage_de = new EntityUsage( $q2, EntityUsage::LABEL_USAGE, 'de' ); |
||
246 | |||
247 | $q1TitleUsage = new EntityUsage( $q1, EntityUsage::TITLE_USAGE ); |
||
248 | $q2TitleUsage = new EntityUsage( $q2, EntityUsage::TITLE_USAGE ); |
||
249 | |||
250 | $q2DescriptionUsage = new EntityUsage( $q2, EntityUsage::DESCRIPTION_USAGE ); |
||
251 | $q2DescriptionUsage_en = new EntityUsage( $q2, EntityUsage::DESCRIPTION_USAGE, 'en' ); |
||
252 | |||
253 | $q2StatementUsage_p1 = new EntityUsage( $q2, EntityUsage::STATEMENT_USAGE, 'P1' ); |
||
254 | $q2StatementUsage_p2 = new EntityUsage( $q2, EntityUsage::STATEMENT_USAGE, 'P2' ); |
||
|
|||
255 | |||
256 | // Page 1 is linked to Q1 |
||
257 | $page1Q1Usages = new PageEntityUsages( 1, [ |
||
258 | $q1SitelinkUsage, |
||
259 | ] ); |
||
260 | |||
261 | // Page 2 uses label and title to link to Q1 |
||
262 | $page2Q1Usages = new PageEntityUsages( 2, [ |
||
263 | $q1LabelUsage_en, |
||
264 | $q1TitleUsage, |
||
265 | $q2DescriptionUsage_en, |
||
266 | ] ); |
||
267 | |||
268 | // Page 1 uses label and title to link to Q2, and shows the German label too. |
||
269 | $page1Q2Usages = new PageEntityUsages( 1, [ |
||
270 | $q2LabelUsage, // "all languages" usage |
||
271 | $q2TitleUsage, |
||
272 | ] ); |
||
273 | |||
274 | // Page 2 uses Q2 to render an infobox |
||
275 | $page2Q2Usages = new PageEntityUsages( 2, [ |
||
276 | $q2StatementUsage_p1, |
||
277 | $q2TitleUsage, |
||
278 | $q2SitelinkUsage, |
||
279 | $q2OtherUsage, |
||
280 | $q2LabelUsage, |
||
281 | $q2DescriptionUsage |
||
282 | ] ); |
||
283 | |||
284 | // Cases |
||
285 | // item with link created |
||
286 | // item with link deleted |
||
287 | // link added |
||
288 | // removed added |
||
289 | // link changed |
||
290 | // direct aspect match |
||
291 | // no aspect match |
||
292 | // all matches any |
||
293 | // any matches all |
||
294 | |||
295 | $cases = []; |
||
296 | |||
297 | $cases['create linked item Q1'] = [ |
||
298 | [ |
||
299 | new PageEntityUsages( 1, [ $q1SitelinkUsage ] ), |
||
300 | ], |
||
301 | [ EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE ], |
||
302 | [], // No usages recorded yet |
||
303 | $changeFactory->newFromUpdate( |
||
304 | EntityChange::ADD, |
||
305 | null, |
||
306 | $this->getItemWithSiteLinks( $q1, [ 'enwiki' => '1' ] ) |
||
307 | ) |
||
308 | ]; |
||
309 | |||
310 | $cases['unlink item Q1'] = [ |
||
311 | [ |
||
312 | new PageEntityUsages( 1, [ $q1SitelinkUsage ] ), |
||
313 | new PageEntityUsages( 2, [ $q1TitleUsage ] ), |
||
314 | ], |
||
315 | [ EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE ], |
||
316 | [ $page1Q1Usages, $page2Q1Usages ], // "1" was recorded to be linked to Q1 and the local title used on page "2" |
||
317 | $changeFactory->newFromUpdate( |
||
318 | EntityChange::UPDATE, |
||
319 | $this->getItemWithSiteLinks( $q1, [ 'enwiki' => '1' ] ), |
||
320 | new Item( $q1 ) |
||
321 | ) |
||
322 | ]; |
||
323 | |||
324 | $cases['link item Q2'] = [ |
||
325 | [ |
||
326 | new PageEntityUsages( 1, [ $q2TitleUsage ] ), |
||
327 | new PageEntityUsages( 2, [ $q2TitleUsage, $q2SitelinkUsage ] ), |
||
328 | ], |
||
329 | [ EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE ], |
||
330 | [ $page1Q2Usages, $page2Q2Usages ], |
||
331 | $changeFactory->newFromUpdate( |
||
332 | EntityChange::UPDATE, |
||
333 | new Item( $q2 ), |
||
334 | $this->getItemWithSiteLinks( $q2, [ 'enwiki' => '2' ] ) |
||
335 | ) |
||
336 | ]; |
||
337 | |||
338 | $cases['change link of Q1, with NO prior record'] = [ |
||
339 | [ |
||
340 | new PageEntityUsages( 1, [ $q1SitelinkUsage ] ), |
||
341 | new PageEntityUsages( 2, [ $q1SitelinkUsage ] ), |
||
342 | ], |
||
343 | [ EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE ], |
||
344 | [], |
||
345 | $changeFactory->newFromUpdate( |
||
346 | EntityChange::UPDATE, |
||
347 | $this->getItemWithSiteLinks( $q1, [ 'enwiki' => '1' ] ), |
||
348 | $this->getItemWithSiteLinks( $q1, [ 'enwiki' => '2' ] ) |
||
349 | ) |
||
350 | ]; |
||
351 | |||
352 | $cases['change link of Q1, with prior record'] = [ |
||
353 | [ |
||
354 | new PageEntityUsages( 1, [ $q1SitelinkUsage ] ), |
||
355 | new PageEntityUsages( 2, [ $q1SitelinkUsage, $q1TitleUsage ] ), |
||
356 | ], |
||
357 | [ EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE ], |
||
358 | [ $page1Q1Usages, $page2Q1Usages ], |
||
359 | $changeFactory->newFromUpdate( |
||
360 | EntityChange::UPDATE, |
||
361 | $this->getItemWithSiteLinks( $q1, [ 'enwiki' => '1' ] ), |
||
362 | $this->getItemWithSiteLinks( $q1, [ 'enwiki' => '2' ] ) |
||
363 | ) |
||
364 | ]; |
||
365 | |||
366 | $badges = [ new ItemId( 'Q34' ) ]; |
||
367 | $cases['badge only change on Q1'] = [ |
||
368 | [ |
||
369 | new PageEntityUsages( 1, [ $q1SitelinkUsage ] ), |
||
370 | ], |
||
371 | [ EntityUsage::SITELINK_USAGE ], |
||
372 | [ $page1Q1Usages, $page2Q1Usages ], |
||
373 | $changeFactory->newFromUpdate( |
||
374 | EntityChange::UPDATE, |
||
375 | $this->getItemWithSiteLinks( $q1, [ 'enwiki' => '1' ] ), |
||
376 | $this->getItemWithSiteLinks( $q1, [ 'enwiki' => '1' ], $badges ) ) |
||
377 | ]; |
||
378 | |||
379 | $cases['delete linked item Q2'] = [ |
||
380 | [ |
||
381 | new PageEntityUsages( 1, [ $q2TitleUsage ] ), |
||
382 | new PageEntityUsages( 2, [ $q2TitleUsage, $q2SitelinkUsage ] ), |
||
383 | ], |
||
384 | [ EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE ], |
||
385 | [ $page1Q2Usages, $page2Q2Usages ], |
||
386 | $changeFactory->newFromUpdate( |
||
387 | EntityChange::REMOVE, |
||
388 | $this->getItemWithSiteLinks( $q2, [ 'enwiki' => '2' ] ), |
||
389 | null |
||
390 | ) |
||
391 | ]; |
||
392 | |||
393 | $cases['add another sitelink to Q2'] = [ |
||
394 | [ |
||
395 | new PageEntityUsages( 2, [ $q2SitelinkUsage ] ), |
||
396 | ], |
||
397 | [ EntityUsage::SITELINK_USAGE ], |
||
398 | [ $page2Q2Usages ], |
||
399 | $changeFactory->newFromUpdate( |
||
400 | EntityChange::UPDATE, |
||
401 | $this->getItemWithSiteLinks( $q2, [ 'enwiki' => '2' ] ), |
||
402 | $this->getItemWithSiteLinks( $q2, [ |
||
403 | 'enwiki' => '2', |
||
404 | 'itwiki' => 'DUE', |
||
405 | ] ) |
||
406 | ) |
||
407 | ]; |
||
408 | |||
409 | $cases['other language label change on Q1 (not used on any page)'] = [ |
||
410 | [], |
||
411 | [ $labelUsageDe, $labelUsage ], |
||
412 | [ $page1Q1Usages, $page2Q1Usages ], |
||
413 | $changeFactory->newFromUpdate( |
||
414 | EntityChange::UPDATE, |
||
415 | new Item( $q1 ), |
||
416 | $this->getItemWithLabel( $q1, 'de', 'EINS' ) |
||
417 | ) |
||
418 | ]; |
||
419 | |||
420 | $cases['other change on Q2 (used on page 2)'] = [ |
||
421 | [ |
||
422 | new PageEntityUsages( 2, [ $q2OtherUsage ] ), |
||
423 | ], |
||
424 | [ EntityUsage::OTHER_USAGE ], |
||
425 | [ $page1Q2Usages, $page2Q2Usages ], |
||
426 | $changeFactory->newFromUpdate( |
||
427 | EntityChange::UPDATE, |
||
428 | new Item( $q2 ), |
||
429 | $this->getItemWithAliases( $q2, 'fr', [ 'X', 'Y' ] ) |
||
430 | ) |
||
431 | ]; |
||
432 | |||
433 | $cases['other language label change on Q2 (used on page 1 and 2)'] = [ |
||
434 | [ |
||
435 | new PageEntityUsages( 1, [ $q2LabelUsage, $q2LabelUsage_de ] ), |
||
436 | new PageEntityUsages( 2, [ $q2LabelUsage, $q2LabelUsage_de ] ), |
||
437 | ], |
||
438 | [ $labelUsageDe, $labelUsage ], |
||
439 | [ $page1Q2Usages, $page2Q2Usages ], |
||
440 | $changeFactory->newFromUpdate( |
||
441 | EntityChange::UPDATE, |
||
442 | new Item( $q2 ), |
||
443 | $this->getItemWithLabel( $q2, 'de', 'EINS' ) |
||
444 | ) |
||
445 | ]; |
||
446 | |||
447 | $cases['local label change on Q1 (used by page 2)'] = [ |
||
448 | [ |
||
449 | new PageEntityUsages( 2, [ $q1LabelUsage_en ] ), |
||
450 | ], |
||
451 | [ $labelUsageEn, $labelUsage ], |
||
452 | [ $page1Q1Usages, $page2Q1Usages ], |
||
453 | $changeFactory->newFromUpdate( |
||
454 | EntityChange::UPDATE, |
||
455 | new Item( $q1 ), |
||
456 | $this->getItemWithLabel( $q1, 'en', 'ONE' ) |
||
457 | ) |
||
458 | ]; |
||
459 | |||
460 | $cases['local label change on Q2 (used by page 1 and page 2)'] = [ |
||
461 | [ |
||
462 | new PageEntityUsages( 1, [ $q2LabelUsage, $q2LabelUsage_en ] ), |
||
463 | new PageEntityUsages( 2, [ $q2LabelUsage, $q2LabelUsage_en ] ), |
||
464 | ], |
||
465 | [ $labelUsageEn, $labelUsage ], |
||
466 | [ $page1Q2Usages, $page2Q2Usages ], |
||
467 | $changeFactory->newFromUpdate( |
||
468 | EntityChange::UPDATE, |
||
469 | new Item( $q2 ), |
||
470 | $this->getItemWithLabel( $q2, 'en', 'TWO' ) |
||
471 | ) |
||
472 | ]; |
||
473 | |||
474 | $cases['local description change on Q2 (used by page 2)'] = [ |
||
475 | [ |
||
476 | new PageEntityUsages( 2, [ $q2DescriptionUsage, $q2DescriptionUsage_en ] ), |
||
477 | ], |
||
478 | [ EntityUsage::DESCRIPTION_USAGE . '.en', EntityUsage::DESCRIPTION_USAGE ], |
||
479 | [ $page2Q2Usages ], |
||
480 | $changeFactory->newFromUpdate( |
||
481 | EntityChange::UPDATE, |
||
482 | new Item( $q2 ), |
||
483 | $this->getItemWithDescriptions( $q2, [ 'en' => 'Wow' ] ) |
||
484 | ) |
||
485 | ]; |
||
486 | |||
487 | $cases['local statement change on Q2 (used by page 2)'] = [ |
||
488 | [ |
||
489 | new PageEntityUsages( 2, [ $q2StatementUsage_p1 ] ), |
||
490 | ], |
||
491 | [ EntityUsage::STATEMENT_USAGE . '.P1', EntityUsage::STATEMENT_USAGE ], |
||
492 | [ $page2Q2Usages ], |
||
493 | $changeFactory->newFromUpdate( |
||
494 | EntityChange::UPDATE, |
||
495 | new Item( $q2 ), |
||
496 | $this->getItemWithStatement( $q2, new PropertyId( 'P1' ), new StringValue( 'Hello' ) ) |
||
497 | ) |
||
498 | ]; |
||
499 | |||
500 | $cases['unrelated statement change on Q2 (used by page 2)'] = [ |
||
501 | [], |
||
502 | [ EntityUsage::STATEMENT_USAGE . '.P2', EntityUsage::STATEMENT_USAGE ], |
||
503 | [ $page2Q2Usages ], |
||
504 | $changeFactory->newFromUpdate( |
||
505 | EntityChange::UPDATE, |
||
506 | new Item( $q2 ), |
||
507 | $this->getItemWithStatement( $q2, new PropertyId( 'P2' ), new StringValue( 'Hello' ) ) |
||
508 | ) |
||
509 | ]; |
||
510 | |||
511 | return $cases; |
||
512 | } |
||
513 | |||
668 |
This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.
Both the
$myVar
assignment in line 1 and the$higher
assignment in line 2 are dead. The first because$myVar
is never used and the second because$higher
is always overwritten for every possible time line.