| Total Complexity | 233 |
| Total Lines | 640 |
| Duplicated Lines | 12.19 % |
| Changes | 1 | ||
| Bugs | 1 | Features | 0 |
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:
Complex classes like JalaliDate often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use JalaliDate, and based on these observations, apply Extract Interface, too.
| 1 | <?php |
||
| 11 | class JalaliDate { |
||
| 12 | |||
| 13 | public function jdate($format,$timestamp='',$none='',$time_zone='Asia/Tehran',$tr_num='fa'){ |
||
| 216 | } |
||
| 217 | |||
| 218 | /* F */ |
||
| 219 | public function jstrftime($format,$timestamp='',$none='',$time_zone='Asia/Tehran',$tr_num='fa'){ |
||
| 220 | |||
| 221 | $T_sec=0;/* <= رفع خطاي زمان سرور ، با اعداد '+' و '-' بر حسب ثانيه */ |
||
| 222 | |||
| 223 | if($time_zone!='local')date_default_timezone_set(($time_zone==='')?'Asia/Tehran':$time_zone); |
||
| 224 | $ts=$T_sec+(($timestamp==='')?time():$this->tr_num($timestamp)); |
||
| 225 | $date=explode('_',date('h_H_i_j_n_s_w_Y',$ts)); |
||
| 226 | list($j_y,$j_m,$j_d)=$this->gregorian_to_jalali($date[7],$date[4],$date[3]); |
||
| 227 | $doy=($j_m<7)?(($j_m-1)*31)+$j_d-1:(($j_m-7)*30)+$j_d+185; |
||
| 228 | $kab=(((($j_y%33)%4)-1)==((int)(($j_y%33)*0.05)))?1:0; |
||
| 229 | $sl=strlen($format); |
||
| 230 | $out=''; |
||
| 231 | for($i=0; $i<$sl; $i++){ |
||
| 232 | $sub=substr($format,$i,1); |
||
| 233 | if($sub=='%'){ |
||
| 234 | $sub=substr($format,++$i,1); |
||
| 235 | }else{ |
||
| 236 | $out.=$sub; |
||
| 237 | continue; |
||
| 238 | } |
||
| 239 | switch($sub){ |
||
| 240 | |||
| 241 | /* Day */ |
||
| 242 | case'a': |
||
| 243 | $out.=$this->jdate_words(array('kh'=>$date[6]),' '); |
||
| 244 | break; |
||
| 245 | |||
| 246 | case'A': |
||
| 247 | $out.=$this->jdate_words(array('rh'=>$date[6]),' '); |
||
| 248 | break; |
||
| 249 | |||
| 250 | case'd': |
||
| 251 | $out.=($j_d<10)?'0'.$j_d:$j_d; |
||
| 252 | break; |
||
| 253 | |||
| 254 | case'e': |
||
| 255 | $out.=($j_d<10)?' '.$j_d:$j_d; |
||
| 256 | break; |
||
| 257 | |||
| 258 | case'j': |
||
| 259 | $out.=str_pad($doy+1,3,0,STR_PAD_LEFT); |
||
| 260 | break; |
||
| 261 | |||
| 262 | case'u': |
||
| 263 | $out.=$date[6]+1; |
||
| 264 | break; |
||
| 265 | |||
| 266 | View Code Duplication | case'w': |
|
| 267 | $out.=($date[6]==6)?0:$date[6]+1; |
||
| 268 | break; |
||
| 269 | |||
| 270 | /* Week */ |
||
| 271 | case'U': |
||
| 272 | $avs=(($date[6]<5)?$date[6]+2:$date[6]-5)-($doy%7); |
||
| 273 | if($avs<0)$avs+=7; |
||
| 274 | $num=(int)(($doy+$avs)/7)+1; |
||
| 275 | if($avs>3 or $avs==1)$num--; |
||
| 276 | $out.=($num<10)?'0'.$num:$num; |
||
| 277 | break; |
||
| 278 | |||
| 279 | View Code Duplication | case'V': |
|
| 280 | $avs=(($date[6]==6)?0:$date[6]+1)-($doy%7); |
||
| 281 | if($avs<0)$avs+=7; |
||
| 282 | $num=(int)(($doy+$avs)/7); |
||
| 283 | if($avs<4){ |
||
| 284 | $num++; |
||
| 285 | }elseif($num<1){ |
||
| 286 | $num=($avs==4 or $avs==((((($j_y%33)%4)-2)==((int)(($j_y%33)*0.05)))?5:4))?53:52; |
||
| 287 | } |
||
| 288 | $aks=$avs+$kab; |
||
| 289 | if($aks==7)$aks=0; |
||
| 290 | $out.=(($kab+363-$doy)<$aks and $aks<3)?'01':(($num<10)?'0'.$num:$num); |
||
| 291 | break; |
||
| 292 | |||
| 293 | case'W': |
||
| 294 | $avs=(($date[6]==6)?0:$date[6]+1)-($doy%7); |
||
| 295 | if($avs<0)$avs+=7; |
||
| 296 | $num=(int)(($doy+$avs)/7)+1; |
||
| 297 | if($avs>3)$num--; |
||
| 298 | $out.=($num<10)?'0'.$num:$num; |
||
| 299 | break; |
||
| 300 | |||
| 301 | /* Month */ |
||
| 302 | case'b': |
||
| 303 | case'h': |
||
| 304 | $out.=$this->jdate_words(array('km'=>$j_m),' '); |
||
| 305 | break; |
||
| 306 | |||
| 307 | case'B': |
||
| 308 | $out.=$this->jdate_words(array('mm'=>$j_m),' '); |
||
| 309 | break; |
||
| 310 | |||
| 311 | case'm': |
||
| 312 | $out.=($j_m>9)?$j_m:'0'.$j_m; |
||
| 313 | break; |
||
| 314 | |||
| 315 | /* Year */ |
||
| 316 | case'C': |
||
| 317 | $tmp=(int)($j_y/100); |
||
| 318 | $out.=($tmp>9)?$tmp:'0'.$tmp; |
||
| 319 | break; |
||
| 320 | |||
| 321 | View Code Duplication | case'g': |
|
| 322 | $jdw=($date[6]==6)?0:$date[6]+1; |
||
| 323 | $dny=364+$kab-$doy; |
||
| 324 | $out.=substr(($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y),2,2); |
||
| 325 | break; |
||
| 326 | |||
| 327 | View Code Duplication | case'G': |
|
| 328 | $jdw=($date[6]==6)?0:$date[6]+1; |
||
| 329 | $dny=364+$kab-$doy; |
||
| 330 | $out.=($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y); |
||
| 331 | break; |
||
| 332 | |||
| 333 | case'y': |
||
| 334 | $out.=substr($j_y,2,2); |
||
| 335 | break; |
||
| 336 | |||
| 337 | case'Y': |
||
| 338 | $out.=$j_y; |
||
| 339 | break; |
||
| 340 | |||
| 341 | /* Time */ |
||
| 342 | case'H': |
||
| 343 | $out.=$date[1]; |
||
| 344 | break; |
||
| 345 | |||
| 346 | case'I': |
||
| 347 | $out.=$date[0]; |
||
| 348 | break; |
||
| 349 | |||
| 350 | case'l': |
||
| 351 | $out.=($date[0]>9)?$date[0]:' '.(int)$date[0]; |
||
| 352 | break; |
||
| 353 | |||
| 354 | case'M': |
||
| 355 | $out.=$date[2]; |
||
| 356 | break; |
||
| 357 | |||
| 358 | case'p': |
||
| 359 | $out.=($date[1]<12)?'قبل از ظهر':'بعد از ظهر'; |
||
| 360 | break; |
||
| 361 | |||
| 362 | case'P': |
||
| 363 | $out.=($date[1]<12)?'ق.ظ':'ب.ظ'; |
||
| 364 | break; |
||
| 365 | |||
| 366 | case'r': |
||
| 367 | $out.=$date[0].':'.$date[2].':'.$date[5].' '.(($date[1]<12)?'قبل از ظهر':'بعد از ظهر'); |
||
| 368 | break; |
||
| 369 | |||
| 370 | case'R': |
||
| 371 | $out.=$date[1].':'.$date[2]; |
||
| 372 | break; |
||
| 373 | |||
| 374 | case'S': |
||
| 375 | $out.=$date[5]; |
||
| 376 | break; |
||
| 377 | |||
| 378 | case'T': |
||
| 379 | $out.=$date[1].':'.$date[2].':'.$date[5]; |
||
| 380 | break; |
||
| 381 | |||
| 382 | case'X': |
||
| 383 | $out.=$date[0].':'.$date[2].':'.$date[5]; |
||
| 384 | break; |
||
| 385 | |||
| 386 | case'z': |
||
| 387 | $out.=date('O',$ts); |
||
| 388 | break; |
||
| 389 | |||
| 390 | case'Z': |
||
| 391 | $out.=date('T',$ts); |
||
| 392 | break; |
||
| 393 | |||
| 394 | /* Time and Date Stamps */ |
||
| 395 | View Code Duplication | case'c': |
|
| 396 | $key=$this->jdate_words(array('rh'=>$date[6],'mm'=>$j_m)); |
||
| 397 | $out.=$date[1].':'.$date[2].':'.$date[5].' '.date('P',$ts).' '.$key['rh'].'، '.$j_d.' '.$key['mm'].' '.$j_y; |
||
| 398 | break; |
||
| 399 | |||
| 400 | View Code Duplication | case'D': |
|
| 401 | $out.=substr($j_y,2,2).'/'.(($j_m>9)?$j_m:'0'.$j_m).'/'.(($j_d<10)?'0'.$j_d:$j_d); |
||
| 402 | break; |
||
| 403 | |||
| 404 | case'F': |
||
| 405 | $out.=$j_y.'-'.(($j_m>9)?$j_m:'0'.$j_m).'-'.(($j_d<10)?'0'.$j_d:$j_d); |
||
| 406 | break; |
||
| 407 | |||
| 408 | case's': |
||
| 409 | $out.=$ts; |
||
| 410 | break; |
||
| 411 | |||
| 412 | View Code Duplication | case'x': |
|
| 413 | $out.=substr($j_y,2,2).'/'.(($j_m>9)?$j_m:'0'.$j_m).'/'.(($j_d<10)?'0'.$j_d:$j_d); |
||
| 414 | break; |
||
| 415 | |||
| 416 | /* Miscellaneous */ |
||
| 417 | case'n': |
||
| 418 | $out.="\n"; |
||
| 419 | break; |
||
| 420 | |||
| 421 | case't': |
||
| 422 | $out.="\t"; |
||
| 423 | break; |
||
| 424 | |||
| 425 | case'%': |
||
| 426 | $out.='%'; |
||
| 427 | break; |
||
| 428 | |||
| 429 | default:$out.=$sub; |
||
| 430 | } |
||
| 431 | } |
||
| 432 | return($tr_num!='en')?$this->tr_num($out,'fa','.'):$out; |
||
| 433 | } |
||
| 434 | |||
| 435 | /* F */ |
||
| 436 | public function jmktime($h='',$m='',$s='',$jm='',$jd='',$jy='',$none='',$timezone='Asia/Tehran'){ |
||
| 437 | if($timezone!='local')date_default_timezone_set($timezone); |
||
| 438 | if($h===''){ |
||
| 439 | return time(); |
||
| 440 | }else{ |
||
| 441 | list($h,$m,$s,$jm,$jd,$jy)=explode('_',$this->tr_num($h.'_'.$m.'_'.$s.'_'.$jm.'_'.$jd.'_'.$jy)); |
||
| 442 | if($m===''){ |
||
| 443 | return mktime($h); |
||
| 444 | }else{ |
||
| 445 | if($s===''){ |
||
| 446 | return mktime($h,$m); |
||
| 447 | }else{ |
||
| 448 | if($jm===''){ |
||
| 449 | return mktime($h,$m,$s); |
||
| 450 | }else{ |
||
| 451 | $jdate=explode('_',jdate('Y_j','','',$timezone,'en')); |
||
| 452 | if($jd===''){ |
||
| 453 | list($gy,$gm,$gd)=$this->jalali_to_gregorian($jdate[0],$jm,$jdate[1]); |
||
| 454 | return mktime($h,$m,$s,$gm); |
||
| 455 | }else{ |
||
| 456 | if($jy===''){ |
||
| 457 | list($gy,$gm,$gd)=$this->jalali_to_gregorian($jdate[0],$jm,$jd); |
||
| 458 | return mktime($h,$m,$s,$gm,$gd); |
||
| 459 | }else{ |
||
| 460 | list($gy,$gm,$gd)=$this->jalali_to_gregorian($jy,$jm,$jd); |
||
| 461 | return mktime($h,$m,$s,$gm,$gd,$gy); |
||
| 462 | } |
||
| 463 | } |
||
| 464 | } |
||
| 465 | } |
||
| 466 | } |
||
| 467 | } |
||
| 468 | } |
||
| 469 | |||
| 470 | /* F */ |
||
| 471 | public function jgetdate($timestamp='',$none='',$timezone='Asia/Tehran',$tn='en'){ |
||
| 472 | $ts=($timestamp==='')?time():$this->tr_num($timestamp); |
||
| 473 | $jdate=explode('_',jdate('F_G_i_j_l_n_s_w_Y_z',$ts,'',$timezone,$tn)); |
||
| 474 | return array( |
||
| 475 | 'seconds'=>$this->tr_num((int)$this->tr_num($jdate[6]),$tn), |
||
| 476 | 'minutes'=>$this->tr_num((int)$this->tr_num($jdate[2]),$tn), |
||
| 477 | 'hours'=>$jdate[1], |
||
| 478 | 'mday'=>$jdate[3], |
||
| 479 | 'wday'=>$jdate[7], |
||
| 480 | 'mon'=>$jdate[5], |
||
| 481 | 'year'=>$jdate[8], |
||
| 482 | 'yday'=>$jdate[9], |
||
| 483 | 'weekday'=>$jdate[4], |
||
| 484 | 'month'=>$jdate[0], |
||
| 485 | 0=>$this->tr_num($ts,$tn) |
||
| 486 | ); |
||
| 487 | } |
||
| 488 | |||
| 489 | /* F */ |
||
| 490 | public function jcheckdate($jm,$jd,$jy){ |
||
| 491 | list($jm,$jd,$jy)=explode('_',$this->tr_num($jm.'_'.$jd.'_'.$jy)); |
||
| 492 | $l_d=($jm==12)?((((($jy%33)%4)-1)==((int)(($jy%33)*0.05)))?30:29):31-(int)($jm/6.5); |
||
| 493 | return($jm>12 or $jd>$l_d or $jm<1 or $jd<1 or $jy<1)?false:true; |
||
| 494 | } |
||
| 495 | |||
| 496 | /* F */ |
||
| 497 | private function tr_num($str,$mod='en',$mf='٫'){ |
||
| 498 | $num_a=array('0','1','2','3','4','5','6','7','8','9','.'); |
||
| 499 | $key_a=array('۰','۱','۲','۳','۴','۵','۶','۷','۸','۹',$mf); |
||
| 500 | return($mod=='fa')?str_replace($num_a,$key_a,$str):str_replace($key_a,$num_a,$str); |
||
| 501 | } |
||
| 502 | |||
| 503 | /* F */ |
||
| 504 | private function jdate_words($array,$mod=''){ |
||
| 505 | foreach($array as $type=>$num){ |
||
| 506 | $num=(int)$this->tr_num($num); |
||
| 507 | switch($type){ |
||
| 508 | |||
| 509 | case'ss': |
||
| 510 | $sl=strlen($num); |
||
| 511 | $xy3=substr($num,2-$sl,1); |
||
| 512 | $h3=$h34=$h4=''; |
||
| 513 | if($xy3==1){ |
||
| 514 | $p34=''; |
||
| 515 | $k34=array('ده','یازده','دوازده','سیزده','چهارده','پانزده','شانزده','هفده','هجده','نوزده'); |
||
| 516 | $h34=$k34[substr($num,2-$sl,2)-10]; |
||
| 517 | }else{ |
||
| 518 | $xy4=substr($num,3-$sl,1); |
||
| 519 | $p34=($xy3==0 or $xy4==0)?'':' و '; |
||
| 520 | $k3=array('','','بیست','سی','چهل','پنجاه','شصت','هفتاد','هشتاد','نود'); |
||
| 521 | $h3=$k3[$xy3]; |
||
| 522 | $k4=array('','یک','دو','سه','چهار','پنج','شش','هفت','هشت','نه'); |
||
| 523 | $h4=$k4[$xy4]; |
||
| 524 | } |
||
| 525 | $array[$type]=(($num>99)?str_replace(array('12','13','14','19','20') |
||
| 526 | ,array('هزار و دویست','هزار و سیصد','هزار و چهارصد','هزار و نهصد','دوهزار') |
||
| 527 | ,substr($num,0,2)).((substr($num,2,2)=='00')?'':' و '):'').$h3.$p34.$h34.$h4; |
||
| 528 | break; |
||
| 529 | |||
| 530 | View Code Duplication | case'mm': |
|
| 531 | $key=array('فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند'); |
||
| 532 | $array[$type]=$key[$num-1]; |
||
| 533 | break; |
||
| 534 | |||
| 535 | case'rr': |
||
| 536 | $key=array('یک','دو','سه','چهار','پنج','شش','هفت','هشت','نه','ده','یازده','دوازده','سیزده' |
||
| 537 | ,'چهارده','پانزده','شانزده','هفده','هجده','نوزده','بیست','بیست و یک','بیست و دو','بیست و سه' |
||
| 538 | ,'بیست و چهار','بیست و پنج','بیست و شش','بیست و هفت','بیست و هشت','بیست و نه','سی','سی و یک'); |
||
| 539 | $array[$type]=$key[$num-1]; |
||
| 540 | break; |
||
| 541 | |||
| 542 | case'rh': |
||
| 543 | $key=array('یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'); |
||
| 544 | $array[$type]=$key[$num]; |
||
| 545 | break; |
||
| 546 | |||
| 547 | View Code Duplication | case'sh': |
|
| 548 | $key=array('مار','اسب','گوسفند','میمون','مرغ','سگ','خوک','موش','گاو','پلنگ','خرگوش','نهنگ'); |
||
| 549 | $array[$type]=$key[$num%12]; |
||
| 550 | break; |
||
| 551 | |||
| 552 | View Code Duplication | case'mb': |
|
| 553 | $key=array('حمل','ثور','جوزا','سرطان','اسد','سنبله','میزان','عقرب','قوس','جدی','دلو','حوت'); |
||
| 554 | $array[$type]=$key[$num-1]; |
||
| 555 | break; |
||
| 556 | |||
| 557 | case'ff': |
||
| 558 | $key=array('بهار','تابستان','پاییز','زمستان'); |
||
| 559 | $array[$type]=$key[(int)($num/3.1)]; |
||
| 560 | break; |
||
| 561 | |||
| 562 | View Code Duplication | case'km': |
|
| 563 | $key=array('فر','ار','خر','تی','مر','شه','مه','آب','آذ','دی','به','اس'); |
||
| 564 | $array[$type]=$key[$num-1]; |
||
| 565 | break; |
||
| 566 | |||
| 567 | case'kh': |
||
| 568 | $key=array('ی','د','س','چ','پ','ج','ش'); |
||
| 569 | $array[$type]=$key[$num]; |
||
| 570 | break; |
||
| 571 | |||
| 572 | default:$array[$type]=$num; |
||
| 573 | } |
||
| 574 | } |
||
| 575 | return($mod==='')?$array:implode($mod,$array); |
||
| 576 | } |
||
| 577 | |||
| 578 | |||
| 579 | /** Gregorian & Jalali (Hijri_Shamsi,Solar) date converter Functions |
||
| 580 | Author: JDF.SCR.IR =>> Download Full Version : http://jdf.scr.ir/jdf |
||
| 581 | License: GNU/LGPL _ Open Source & Free _ Version: 2.70 : [2017=1395] |
||
| 582 | -------------------------------------------------------------------- |
||
| 583 | 1461 = 365*4 + 4/4 & 146097 = 365*400 + 400/4 - 400/100 + 400/400 |
||
| 584 | 12053 = 365*33 + 32/4 & 36524 = 365*100 + 100/4 - 100/100 */ |
||
| 585 | |||
| 586 | /* F */ |
||
| 587 | public function gregorian_to_jalali($gy,$gm,$gd,$mod=''){ |
||
| 588 | list($gy,$gm,$gd)=explode('_',$this->tr_num($gy.'_'.$gm.'_'.$gd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */ |
||
| 589 | $g_d_m=array(0,31,59,90,120,151,181,212,243,273,304,334); |
||
| 590 | if($gy > 1600){ |
||
| 591 | $jy=979; |
||
| 592 | $gy-=1600; |
||
| 593 | }else{ |
||
| 594 | $jy=0; |
||
| 595 | $gy-=621; |
||
| 596 | } |
||
| 597 | $gy2=($gm > 2)?($gy+1):$gy; |
||
| 598 | $days=(365*$gy) +((int)(($gy2+3)/4)) -((int)(($gy2+99)/100)) +((int)(($gy2+399)/400)) -80 +$gd +$g_d_m[$gm-1]; |
||
| 599 | $jy+=33*((int)($days/12053)); |
||
| 600 | $days%=12053; |
||
| 601 | $jy+=4*((int)($days/1461)); |
||
| 602 | $days%=1461; |
||
| 603 | $jy+=(int)(($days-1)/365); |
||
| 604 | if($days > 365)$days=($days-1)%365; |
||
| 605 | if($days < 186){ |
||
| 606 | $jm=1+(int)($days/31); |
||
| 607 | $jd=1+($days%31); |
||
| 608 | }else{ |
||
| 609 | $jm=7+(int)(($days-186)/30); |
||
| 610 | $jd=1+(($days-186)%30); |
||
| 611 | } |
||
| 612 | return($mod==='')?array($jy,$jm,$jd):$jy .$mod .$jm .$mod .$jd; |
||
| 613 | } |
||
| 614 | |||
| 615 | /* F */ |
||
| 616 | public function jalali_to_gregorian($jy,$jm,$jd,$mod=''){ |
||
| 617 | list($jy,$jm,$jd)=explode('_',$this->tr_num($jy.'_'.$jm.'_'.$jd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */ |
||
| 618 | if($jy > 979){ |
||
| 619 | $gy=1600; |
||
| 620 | $jy-=979; |
||
| 621 | }else{ |
||
| 622 | $gy=621; |
||
| 623 | } |
||
| 624 | $days=(365*$jy) +(((int)($jy/33))*8) +((int)((($jy%33)+3)/4)) +78 +$jd +(($jm<7)?($jm-1)*31:(($jm-7)*30)+186); |
||
| 625 | $gy+=400*((int)($days/146097)); |
||
| 626 | $days%=146097; |
||
| 627 | if($days > 36524){ |
||
| 628 | $gy+=100*((int)(--$days/36524)); |
||
| 629 | $days%=36524; |
||
| 630 | if($days >= 365)$days++; |
||
| 631 | } |
||
| 632 | $gy+=4*((int)(($days)/1461)); |
||
| 633 | $days%=1461; |
||
| 634 | $gy+=(int)(($days-1)/365); |
||
| 635 | if($days > 365)$days=($days-1)%365; |
||
| 636 | $gd=$days+1; |
||
| 637 | foreach(array(0,31,((($gy%4==0) and ($gy%100!=0)) or ($gy%400==0))?29:28 ,31,30,31,30,31,31,30,31,30,31) as $gm=>$v){ |
||
| 638 | if($gd <= $v)break; |
||
| 639 | $gd-=$v; |
||
| 640 | } |
||
| 641 | return($mod==='')?array($gy,$gm,$gd):$gy .$mod .$gm .$mod .$gd; |
||
| 642 | } |
||
| 643 | |||
| 644 | |||
| 645 | public function g_t_j($date,$separator='-'){ |
||
| 651 | } |
||
| 652 | |||
| 653 | } |
||
| 654 | |||
| 655 |
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.