| 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
$myVarassignment in line 1 and the$higherassignment in line 2 are dead. The first because$myVaris never used and the second because$higheris always overwritten for every possible time line.