Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
| 1 | <?php |
||
| 56 | class FullTextSearchService { |
||
| 57 | |||
| 58 | |||
| 59 | /** @var BoardMapper */ |
||
| 60 | private $boardMapper; |
||
| 61 | |||
| 62 | /** @var StackMapper */ |
||
| 63 | private $stackMapper; |
||
| 64 | |||
| 65 | /** @var CardMapper */ |
||
| 66 | private $cardMapper; |
||
| 67 | |||
| 68 | /** @var IFullTextSearchManager */ |
||
| 69 | private $fullTextSearchManager; |
||
| 70 | |||
| 71 | |||
| 72 | /** |
||
| 73 | * FullTextSearchService constructor. |
||
| 74 | * |
||
| 75 | * @param BoardMapper $boardMapper |
||
| 76 | * @param StackMapper $stackMapper |
||
| 77 | * @param CardMapper $cardMapper |
||
| 78 | * @param IFullTextSearchManager $fullTextSearchManager |
||
| 79 | */ |
||
| 80 | public function __construct( |
||
| 90 | |||
| 91 | |||
| 92 | /** |
||
| 93 | * @param GenericEvent $e |
||
| 94 | */ |
||
| 95 | public function onCardCreated(GenericEvent $e) { |
||
| 106 | |||
| 107 | |||
| 108 | /** |
||
| 109 | * @param GenericEvent $e |
||
| 110 | */ |
||
| 111 | View Code Duplication | public function onCardUpdated(GenericEvent $e) { |
|
| 121 | |||
| 122 | |||
| 123 | /** |
||
| 124 | * @param GenericEvent $e |
||
| 125 | */ |
||
| 126 | View Code Duplication | public function onCardDeleted(GenericEvent $e) { |
|
| 136 | |||
| 137 | |||
| 138 | /** |
||
| 139 | * @param GenericEvent $e |
||
| 140 | */ |
||
| 141 | public function onBoardShares(GenericEvent $e) { |
||
| 157 | |||
| 158 | |||
| 159 | /** |
||
| 160 | * @param Card $card |
||
| 161 | * |
||
| 162 | * @return IIndexDocument |
||
| 163 | */ |
||
| 164 | public function generateIndexDocumentFromCard(Card $card): IIndexDocument { |
||
| 169 | |||
| 170 | |||
| 171 | /** |
||
| 172 | * @param IIndexDocument $document |
||
| 173 | * |
||
| 174 | * @throws DoesNotExistException |
||
| 175 | * @throws MultipleObjectsReturnedException |
||
| 176 | */ |
||
| 177 | public function fillIndexDocument(IIndexDocument $document) { |
||
| 178 | /** @var Card $card */ |
||
| 179 | $card = $this->cardMapper->find((int)$document->getId()); |
||
| 180 | |||
| 181 | $document->setTitle(($card->getTitle() === null) ? '' : $card->getTitle()); |
||
| 182 | $document->setContent(($card->getDescription() === null) ? '' : $card->getDescription()); |
||
| 183 | $document->setAccess($this->generateDocumentAccessFromCardId((int)$card->getId())); |
||
| 184 | } |
||
| 185 | |||
| 186 | |||
| 187 | /** |
||
| 188 | * @param int $cardId |
||
| 189 | * |
||
| 190 | * @return IDocumentAccess |
||
| 191 | * @throws DoesNotExistException |
||
| 192 | * @throws MultipleObjectsReturnedException |
||
| 193 | */ |
||
| 194 | public function generateDocumentAccessFromCardId(int $cardId): IDocumentAccess { |
||
| 199 | |||
| 200 | |||
| 201 | /** |
||
| 202 | * @param string $userId |
||
| 203 | * |
||
| 204 | * @return Card[] |
||
| 205 | */ |
||
| 206 | public function getCardsFromUser(string $userId): array { |
||
| 218 | |||
| 219 | |||
| 220 | /** |
||
| 221 | * @param int $boardId |
||
| 222 | * |
||
| 223 | * @return Card[] |
||
| 224 | */ |
||
| 225 | public function getCardsFromBoard(int $boardId): array { |
||
| 234 | |||
| 235 | |||
| 236 | /** |
||
| 237 | * @param int $cardId |
||
| 238 | * |
||
| 239 | * @return Board |
||
| 240 | * @throws DoesNotExistException |
||
| 241 | * @throws MultipleObjectsReturnedException |
||
| 242 | */ |
||
| 243 | public function getBoardFromCardId(int $cardId): Board { |
||
| 250 | |||
| 251 | |||
| 252 | /** |
||
| 253 | * @param int $stackId |
||
| 254 | * |
||
| 255 | * @return Card[] |
||
| 256 | */ |
||
| 257 | private function getCardsFromStack(int $stackId): array { |
||
| 260 | |||
| 261 | |||
| 262 | /** |
||
| 263 | * @param int $boardId |
||
| 264 | * |
||
| 265 | * @return Stack[] |
||
| 266 | */ |
||
| 267 | private function getStacksFromBoard(int $boardId): array { |
||
| 271 | |||
| 272 | |||
| 273 | /** |
||
| 274 | * @param string $userId |
||
| 275 | * |
||
| 276 | * @return Board[] |
||
| 277 | */ |
||
| 278 | private function getBoardsFromUser(string $userId): array { |
||
| 281 | |||
| 282 | |||
| 283 | } |
||
| 284 | |||
| 285 |
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.
This is most likely a typographical error or the method has been renamed.