public function testGetDeprecatedFunctionsList()
 {
     $functions = code_review::getDeprecatedFunctionsList('1.2');
     $this->assertArrayHasKey('dummy_deprecated_function1', $functions);
     $deprecatedFunction = $functions['dummy_deprecated_function1'];
     $this->assertInstanceOf('CodeReview_Issues_Deprecated', $deprecatedFunction);
     $this->assertInstanceOf('ArrayAccess', $deprecatedFunction);
     $this->assertFalse(is_array($deprecatedFunction));
     $this->assertArrayHasKey('name', $deprecatedFunction);
     $this->assertArrayHasKey('version', $deprecatedFunction);
     $this->assertArrayHasKey('file', $deprecatedFunction);
     $this->assertArrayHasKey('line', $deprecatedFunction);
     $this->assertArrayHasKey('deprecated', $deprecatedFunction);
     $this->assertArrayHasKey('reason', $deprecatedFunction);
     $this->assertArrayHasKey('fixinfoshort', $deprecatedFunction);
     $this->assertEquals('dummy_deprecated_function1', $deprecatedFunction['name']);
     $this->assertEquals('1.1', $deprecatedFunction['version']);
     $this->assertEquals(true, $deprecatedFunction['deprecated']);
     $this->assertEquals('deprecated', $deprecatedFunction['reason']);
     $this->assertEquals('Remove it', $deprecatedFunction['fixinfoshort']);
     $this->assertEquals("Line " . $deprecatedFunction['line'] . ":\tFunction call: " . $deprecatedFunction['name'] . " (deprecated since 1.1) Remove it", (string) $deprecatedFunction);
     $functions = code_review::getDeprecatedFunctionsList('1.1');
     $this->assertArrayNotHasKey('dummy_deprecated_function1', $functions);
 }
 /**
  * @return string
  */
 private function ouptutUnusedFunctionsReport()
 {
     //prepare unused functions report
     $functions = get_defined_functions();
     $functions = array_filter($functions['user'], 'strtolower');
     $calledFunctions = array_filter($this->calledFunctions, 'strtolower');
     $deprecatedFunctions = array_filter(array_keys(code_review::getDeprecatedFunctionsList($this->maxVersion)), 'strtolower');
     $functions = array_diff($functions, $calledFunctions, $deprecatedFunctions);
     foreach ($functions as $key => $function) {
         if (function_exists($function)) {
             $reflectionFunction = new ReflectionFunction($function);
             if (!$reflectionFunction->isInternal()) {
                 continue;
             }
             unset($reflectionFunction);
         }
         unset($functions[$key]);
     }
     sort($functions);
     //unused functions report
     $result = "Not called but defined funcions:\n";
     $baseLenght = strlen(elgg_get_root_path());
     foreach (array_values($functions) as $functionName) {
         $reflectionFunction = new ReflectionFunction($functionName);
         $path = substr($reflectionFunction->getFileName(), $baseLenght);
         if (strpos($path, 'engine') !== 0) {
             continue;
         }
         $result .= "{$functionName} \t{$path}:{$reflectionFunction->getStartLine()}\n";
     }
     return $result;
 }
Esempio n. 3
0
<?php

echo elgg_view('code_review/navigation');
//fetch all
$functions = code_review::getDeprecatedFunctionsList('');
//group by versions
$groups = array();
foreach ($functions as $name => $data) {
    $version = isset($data['version']) ? $data['version'] : 'Unknown';
    if (!isset($groups[$version])) {
        $groups[$version] = array();
    }
    $groups[$version][$name] = $data;
}
uksort($groups, 'version_compare');
$groups = array_reverse($groups, true);
$fixes = new \CodeReview\CodeFixer();
$replaces = $fixes->getBasicFunctionRenames();
foreach ($groups as $version => $group) {
    $title = elgg_echo('code_review:deprecated_list:title', array($version));
    $body = "<table class=\"elgg-table-alt\">";
    $body .= "<tr>" . "<th><strong>" . elgg_echo('code_review:deprecated_list:name') . "</strong></th>" . "<th><strong>" . elgg_echo('code_review:deprecated_list:remarks') . "</strong></th>" . "<th><strong>" . elgg_echo('code_review:deprecated_list:solution') . "</strong></th>" . "</tr>";
    ksort($group, SORT_STRING);
    foreach ($group as $name => $data) {
        $fileLine = elgg_echo('code_review:deprecated_list:file_line', array($data['file'], $data['line']));
        $body .= "<tr><td><abbr title=\"{$fileLine}\">" . $data['name'] . "</abbr></td>";
        $body .= "<td>" . ($data['fixinfoshort'] ? $data['fixinfoshort'] : '') . '</td>';
        $solution = '';
        if (isset($replaces[$name])) {
            $solution = elgg_echo('code_review:solution:basic_replace_with', array($replaces[$name]));
        }
 /**
  * Should check that code_review::getDeprecatedFunctionsList returns expected results for functions defined in deprecated-*
  */
 public function testGetDeprecatedFunctionsList11()
 {
     $functions = \code_review::getDeprecatedFunctionsList('1.1');
     $this->assertCount(1, $functions);
     $this->assertArrayNotHasKey('dummy_deprecated_function1', $functions);
     $this->assertArrayNotHasKey('dummy_deprecated_function2', $functions);
     $this->assertArrayHasKey('foobardummyclass::deprecatedpublic', $functions);
     $deprecatedFunction1 = $functions['foobardummyclass::deprecatedpublic'];
     $this->assertInstanceOf('\\CodeReview\\Issues\\DeprecatedIssue', $deprecatedFunction1);
     $this->assertInstanceOf('ArrayAccess', $deprecatedFunction1);
     $this->assertFalse(is_array($deprecatedFunction1));
     $this->assertArrayHasKey('name', $deprecatedFunction1);
     $this->assertArrayHasKey('version', $deprecatedFunction1);
     $this->assertArrayHasKey('file', $deprecatedFunction1);
     $this->assertArrayHasKey('line', $deprecatedFunction1);
     $this->assertArrayHasKey('deprecated', $deprecatedFunction1);
     $this->assertArrayHasKey('reason', $deprecatedFunction1);
     $this->assertArrayHasKey('fixinfoshort', $deprecatedFunction1);
     $this->assertEquals('FoobarDummyClass::deprecatedPublic', $deprecatedFunction1['name']);
     $this->assertEquals('1.1', $deprecatedFunction1['version']);
     $this->assertEquals(true, $deprecatedFunction1['deprecated']);
     $this->assertEquals('deprecated', $deprecatedFunction1['reason']);
     $this->assertEquals('Deprecated public class method.', $deprecatedFunction1['fixinfoshort']);
     $this->assertEquals("Function call: " . $deprecatedFunction1['name'] . " (deprecated since 1.1) Deprecated public class method.", (string) $deprecatedFunction1);
 }