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; }
<?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); }