Arbit - project tracking

PHPMD

Browse source code

File: / source/ PHP/ PMD/ Node/ Method.php

Type
text/plain text/plain
Last Author
mapi
Version
209
Line Rev. Author Source
1 9 mapi <?php
2 mapi /**
3 mapi * This file is part of PHP_PMD.
4 mapi *
5 mapi * PHP Version 5
6 mapi *
7 174 mapi * Copyright (c) 2009-2010, Manuel Pichler <mapi@phpmd.org>.
8 9 mapi * All rights reserved.
9 mapi *
10 mapi * Redistribution and use in source and binary forms, with or without
11 mapi * modification, are permitted provided that the following conditions
12 mapi * are met:
13 mapi *
14 mapi * * Redistributions of source code must retain the above copyright
15 mapi * notice, this list of conditions and the following disclaimer.
16 mapi *
17 mapi * * Redistributions in binary form must reproduce the above copyright
18 mapi * notice, this list of conditions and the following disclaimer in
19 mapi * the documentation and/or other materials provided with the
20 mapi * distribution.
21 mapi *
22 mapi * * Neither the name of Manuel Pichler nor the names of his
23 mapi * contributors may be used to endorse or promote products derived
24 mapi * from this software without specific prior written permission.
25 mapi *
26 mapi * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 mapi * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 mapi * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
29 mapi * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
30 mapi * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31 mapi * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
32 mapi * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 mapi * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34 mapi * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 mapi * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36 mapi * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 mapi * POSSIBILITY OF SUCH DAMAGE.
38 mapi *
39 mapi * @category PHP
40 mapi * @package PHP_PMD
41 14 mapi * @subpackage Node
42 174 mapi * @author Manuel Pichler <mapi@phpmd.org>
43 150 mapi * @copyright 2009-2010 Manuel Pichler. All rights reserved.
44 9 mapi * @license http://www.opensource.org/licenses/bsd-license.php BSD License
45 mapi * @version SVN: $Id$
46 174 mapi * @link http://phpmd.org
47 9 mapi */
48 mapi
49 200 mapi require_once 'PHP/PMD/Node/AbstractCallable.php';
50 9 mapi
51 mapi /**
52 14 mapi * Wrapper around a PHP_Depend method node.
53 9 mapi *
54 mapi * @category PHP
55 mapi * @package PHP_PMD
56 14 mapi * @subpackage Node
57 174 mapi * @author Manuel Pichler <mapi@phpmd.org>
58 150 mapi * @copyright 2009-2010 Manuel Pichler. All rights reserved.
59 9 mapi * @license http://www.opensource.org/licenses/bsd-license.php BSD License
60 mapi * @version Release: @package_version@
61 174 mapi * @link http://phpmd.org
62 9 mapi */
63 200 mapi class PHP_PMD_Node_Method extends PHP_PMD_Node_AbstractCallable
64 9 mapi {
65 14 mapi /**
66 mapi * Constructs a new method wrapper.
67 mapi *
68 196 mapi * @param PHP_Depend_Code_CodeMethod $node The wrapped method object.
69 14 mapi */
70 mapi public function __construct(PHP_Depend_Code_Method $node)
71 9 mapi {
72 14 mapi parent::__construct($node);
73 9 mapi }
74 14 mapi
75 mapi /**
76 mapi * Returns the name of the parent package.
77 mapi *
78 mapi * @return string
79 mapi */
80 17 mapi public function getPackageName()
81 14 mapi {
82 73 mapi return $this->getNode()->getParent()->getPackage()->getName();
83 14 mapi }
84 17 mapi
85 mapi /**
86 mapi * Returns the name of the parent type or <b>null</b> when this node has no
87 mapi * parent type.
88 mapi *
89 mapi * @return string
90 mapi */
91 mapi public function getParentName()
92 mapi {
93 73 mapi return $this->getNode()->getParent()->getName();
94 17 mapi }
95 118 mapi
96 mapi /**
97 mapi * Returns <b>true</b> when the underlying method is declared as abstract or
98 mapi * is declared as child of an interface.
99 mapi *
100 mapi * @return boolean
101 mapi */
102 mapi public function isAbstract()
103 mapi {
104 mapi return $this->getNode()->isAbstract();
105 mapi }
106 208 mapi
107 mapi /**
108 mapi * Checks if this node has a suppressed annotation for the given rule
109 mapi * instance.
110 mapi *
111 mapi * @param PHP_PMD_AbstractRule $rule The context rule instance.
112 mapi *
113 mapi * @return boolean
114 mapi */
115 mapi public function hasSuppressWarningsAnnotationFor(PHP_PMD_AbstractRule $rule)
116 mapi {
117 mapi if (parent::hasSuppressWarningsAnnotationFor($rule)) {
118 mapi return true;
119 mapi }
120 209 mapi return $this->getParentType()->hasSuppressWarningsAnnotationFor($rule);
121 208 mapi }
122 209 mapi
123 mapi /**
124 mapi * Returns the parent class or interface instance.
125 mapi *
126 mapi * @return PHP_PMD_Node_AbstractType
127 mapi */
128 mapi public function getParentType()
129 mapi {
130 mapi $parentNode = $this->getNode()->getParent();
131 mapi if ($parentNode instanceof PHP_Depend_Code_Class) {
132 mapi return new PHP_PMD_Node_Class($parentNode);
133 mapi }
134 mapi return new PHP_PMD_Node_Interface($parentNode);
135 mapi }
136 208 mapi }