Method buildSwiftMessage
has 27 lines of code (exceeds 25 allowed). Consider refactoring. Open
protected static function buildSwiftMessage($to, $fromAddress, $fromName, $subject, $content, $cc = NULL, $bcc = NULL){
// Sanity checking
if(!isset($to) || $to === null){
throw new \InvalidArgumentException('\"To\" not set.');
- Create a ticketCreate a ticket
Function buildSwiftMessage
has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring. Open
protected static function buildSwiftMessage($to, $fromAddress, $fromName, $subject, $content, $cc = NULL, $bcc = NULL){
// Sanity checking
if(!isset($to) || $to === null){
throw new \InvalidArgumentException('\"To\" not set.');
- Read upRead up
- Create a ticketCreate a ticket
Cognitive Complexity
Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.
A method's cognitive complexity is based on a few simple rules:
- Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
- Code is considered more complex for each "break in the linear flow of the code"
- Code is considered more complex when "flow breaking structures are nested"
Further reading
Method buildSwiftMessage
has 7 arguments (exceeds 4 allowed). Consider refactoring. Open
protected static function buildSwiftMessage($to, $fromAddress, $fromName, $subject, $content, $cc = NULL, $bcc = NULL){
- Create a ticketCreate a ticket
Function logEmail
has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring. Open
public static function logEmail(\Symfony\Component\Mime\Email $message){
// Log the message to a text file
$fd = fopen(PHPWS_SOURCE_DIR . 'logs/email.log',"a");
fprintf($fd, "=======================\n");
- Read upRead up
- Create a ticketCreate a ticket
Cognitive Complexity
Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.
A method's cognitive complexity is based on a few simple rules:
- Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
- Code is considered more complex for each "break in the linear flow of the code"
- Code is considered more complex when "flow breaking structures are nested"
Further reading
The method buildSwiftMessage() has an NPath complexity of 972. The configured NPath complexity threshold is 200. Open
protected static function buildSwiftMessage($to, $fromAddress, $fromName, $subject, $content, $cc = NULL, $bcc = NULL){
// Sanity checking
if(!isset($to) || $to === null){
throw new \InvalidArgumentException('\"To\" not set.');
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
NPathComplexity
Since: 0.1
The NPath complexity of a method is the number of acyclic execution paths through that method. A threshold of 200 is generally considered the point where measures should be taken to reduce complexity.
Example
class Foo {
function bar() {
// lots of complicated code
}
}
Source https://phpmd.org/rules/codesize.html#npathcomplexity
The method buildSwiftMessage() has a Cyclomatic Complexity of 13. The configured cyclomatic complexity threshold is 10. Open
protected static function buildSwiftMessage($to, $fromAddress, $fromName, $subject, $content, $cc = NULL, $bcc = NULL){
// Sanity checking
if(!isset($to) || $to === null){
throw new \InvalidArgumentException('\"To\" not set.');
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
CyclomaticComplexity
Since: 0.1
Complexity is determined by the number of decision points in a method plus one for the method entry. The decision points are 'if', 'while', 'for', and 'case labels'. Generally, 1-4 is low complexity, 5-7 indicates moderate complexity, 8-10 is high complexity, and 11+ is very high complexity.
Example
// Cyclomatic Complexity = 11
class Foo {
1 public function example() {
2 if ($a == $b) {
3 if ($a1 == $b1) {
fiddle();
4 } elseif ($a2 == $b2) {
fiddle();
} else {
fiddle();
}
5 } elseif ($c == $d) {
6 while ($c == $d) {
fiddle();
}
7 } elseif ($e == $f) {
8 for ($n = 0; $n < $h; $n++) {
fiddle();
}
} else {
switch ($z) {
9 case 1:
fiddle();
break;
10 case 2:
fiddle();
break;
11 case 3:
fiddle();
break;
default:
fiddle();
break;
}
}
}
}
Source https://phpmd.org/rules/codesize.html#cyclomaticcomplexity
Missing class import via use statement (line '126', column '23'). Open
throw new \InvalidArgumentException('\"To\" not set.');
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
MissingImport
Since: 2.7.0
Importing all external classes in a file through use statements makes them clearly visible.
Example
function make() {
return new \stdClass();
}
Source http://phpmd.org/rules/cleancode.html#MissingImport
Missing class import via use statement (line '146', column '25'). Open
$message = (new \Symfony\Component\Mime\Email())
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
MissingImport
Since: 2.7.0
Importing all external classes in a file through use statements makes them clearly visible.
Example
function make() {
return new \stdClass();
}
Source http://phpmd.org/rules/cleancode.html#MissingImport
Missing class import via use statement (line '142', column '23'). Open
throw new \InvalidArgumentException('\"Content\" not set.');
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
MissingImport
Since: 2.7.0
Importing all external classes in a file through use statements makes them clearly visible.
Example
function make() {
return new \stdClass();
}
Source http://phpmd.org/rules/cleancode.html#MissingImport
Missing class import via use statement (line '134', column '23'). Open
throw new \InvalidArgumentException('\"From Name\" not set.');
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
MissingImport
Since: 2.7.0
Importing all external classes in a file through use statements makes them clearly visible.
Example
function make() {
return new \stdClass();
}
Source http://phpmd.org/rules/cleancode.html#MissingImport
Missing class import via use statement (line '130', column '23'). Open
throw new \InvalidArgumentException('\"From Address\" not set.');
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
MissingImport
Since: 2.7.0
Importing all external classes in a file through use statements makes them clearly visible.
Example
function make() {
return new \stdClass();
}
Source http://phpmd.org/rules/cleancode.html#MissingImport
Missing class import via use statement (line '138', column '23'). Open
throw new \InvalidArgumentException('\"Subject\" not set.');
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
MissingImport
Since: 2.7.0
Importing all external classes in a file through use statements makes them clearly visible.
Example
function make() {
return new \stdClass();
}
Source http://phpmd.org/rules/cleancode.html#MissingImport
Avoid using static access to class '\Symfony\Component\Mailer\Transport' in method 'sendSwiftMessage'. Open
$transport = Transport::fromDsn('sendmail://default');
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
StaticAccess
Since: 1.4.0
Static access causes unexchangeable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.
Example
class Foo
{
public function bar()
{
Bar::baz();
}
}
Source https://phpmd.org/rules/cleancode.html#staticaccess
Avoid using static access to class '\PHPWS_Template' in method 'buildMessageBody'. Open
$bodyContent = \PHPWS_Template::process($this->tpl, 'intern', $templateFileName);
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
StaticAccess
Since: 1.4.0
Static access causes unexchangeable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.
Example
class Foo
{
public function bar()
{
Bar::baz();
}
}
Source https://phpmd.org/rules/cleancode.html#staticaccess
Reference to undeclared constant \PHPWS_SOURCE_DIR
Open
require_once PHPWS_SOURCE_DIR . 'mod/intern/vendor/autoload.php';
- Create a ticketCreate a ticket
- Exclude checks
Return type of buildSwiftMessage()
is undeclared type \Intern\Email\Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
protected static function buildSwiftMessage($to, $fromAddress, $fromName, $subject, $content, $cc = NULL, $bcc = NULL){
- Create a ticketCreate a ticket
- Exclude checks
Call to method subject
from undeclared class \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
$message = (new \Symfony\Component\Mime\Email())
- Create a ticketCreate a ticket
- Exclude checks
Call to method __construct
from undeclared class \Symfony\Component\Mailer\Mailer
Open
$mailer = new Mailer($transport);
- Create a ticketCreate a ticket
- Exclude checks
Call to method process
from undeclared class \PHPWS_Template
Open
$bodyContent = \PHPWS_Template::process($this->tpl, 'intern', $templateFileName);
- Create a ticketCreate a ticket
- Exclude checks
Call to method __construct
from undeclared class \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
$message = (new \Symfony\Component\Mime\Email())
- Create a ticketCreate a ticket
- Exclude checks
Call to method getSubject
from undeclared class \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
fprintf($fd, "Subject: %s\n", $message->getSubject());
- Create a ticketCreate a ticket
- Exclude checks
Parameter $message
has undeclared type \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
public static function logEmail(\Symfony\Component\Mime\Email $message){
- Create a ticketCreate a ticket
- Exclude checks
Call to method getTo
from undeclared class \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
fprintf($fd, "To: %s\n", implode('', array_keys($message->getTo())));
- Create a ticketCreate a ticket
- Exclude checks
Call to method fromDsn
from undeclared class \Symfony\Component\Mailer\Transport
Open
$transport = Transport::fromDsn('sendmail://default');
- Create a ticketCreate a ticket
- Exclude checks
Reference to undeclared constant \PHPWS_SOURCE_DIR
Open
$fd = fopen(PHPWS_SOURCE_DIR . 'logs/email.log',"a");
- Create a ticketCreate a ticket
- Exclude checks
Call to method getFrom
from undeclared class \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
fprintf($fd, "From: %s\n", $message->getFrom()[0]->getAddress(), $message->getFrom()[0]->getName());
- Create a ticketCreate a ticket
- Exclude checks
Call to method getBcc
from undeclared class \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
if($message->getBcc() != null){
- Create a ticketCreate a ticket
- Exclude checks
Call to method getCc
from undeclared class \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
if($message->getCc() != null){
- Create a ticketCreate a ticket
- Exclude checks
Call to method getBcc
from undeclared class \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
foreach($message->getBcc() as $address => $name){
- Create a ticketCreate a ticket
- Exclude checks
Call to method __construct
from undeclared class \Symfony\Component\Mime\Address
Open
->from( new Address($fromAddress, $fromName))
- Create a ticketCreate a ticket
- Exclude checks
Argument 1 (message)
is \Intern\Email\Symfony\Component\Mime\Email
but \Intern\Email\Email::sendSwiftMessage()
takes \Symfony\Component\Mime\Email
defined at /code/class/Email/Email.php:163
Open
$this->sendSwiftMessage($message);
- Create a ticketCreate a ticket
- Exclude checks
Parameter $message
has undeclared type \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
protected static function sendSwiftMessage(\Symfony\Component\Mime\Email $message)
- Create a ticketCreate a ticket
- Exclude checks
Call to method send
from undeclared class \Symfony\Component\Mailer\Mailer
Open
$mailer->send($message); // send() returns the number of successful recipients. Can be 0, which indicates failure
- Create a ticketCreate a ticket
- Exclude checks
Call to method getTextBody
from undeclared class \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
fprintf($fd, "%s\n\n", $message->getTextBody());
- Create a ticketCreate a ticket
- Exclude checks
Call to method getCc
from undeclared class \Symfony\Component\Mime\Email
(Did you mean class \Intern\Email\Email) Open
foreach($message->getCc() as $address => $name){
- Create a ticketCreate a ticket
- Exclude checks
Avoid variables with short names like $to. Configured minimum length is 3. Open
protected static function buildSwiftMessage($to, $fromAddress, $fromName, $subject, $content, $cc = NULL, $bcc = NULL){
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
ShortVariable
Since: 0.2
Detects when a field, local, or parameter has a very short name.
Example
class Something {
private $q = 15; // VIOLATION - Field
public static function main( array $as ) { // VIOLATION - Formal
$r = 20 + $this->q; // VIOLATION - Local
for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
$r += $this->q;
}
}
}
Source https://phpmd.org/rules/naming.html#shortvariable
Avoid variables with short names like $to. Configured minimum length is 3. Open
protected $to;
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
ShortVariable
Since: 0.2
Detects when a field, local, or parameter has a very short name.
Example
class Something {
private $q = 15; // VIOLATION - Field
public static function main( array $as ) { // VIOLATION - Formal
$r = 20 + $this->q; // VIOLATION - Local
for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
$r += $this->q;
}
}
}
Source https://phpmd.org/rules/naming.html#shortvariable
Avoid variables with short names like $fd. Configured minimum length is 3. Open
$fd = fopen(PHPWS_SOURCE_DIR . 'logs/email.log',"a");
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
ShortVariable
Since: 0.2
Detects when a field, local, or parameter has a very short name.
Example
class Something {
private $q = 15; // VIOLATION - Field
public static function main( array $as ) { // VIOLATION - Formal
$r = 20 + $this->q; // VIOLATION - Local
for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
$r += $this->q;
}
}
}
Source https://phpmd.org/rules/naming.html#shortvariable
Avoid variables with short names like $cc. Configured minimum length is 3. Open
protected $cc;
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
ShortVariable
Since: 0.2
Detects when a field, local, or parameter has a very short name.
Example
class Something {
private $q = 15; // VIOLATION - Field
public static function main( array $as ) { // VIOLATION - Formal
$r = 20 + $this->q; // VIOLATION - Local
for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
$r += $this->q;
}
}
}
Source https://phpmd.org/rules/naming.html#shortvariable
Avoid variables with short names like $cc. Configured minimum length is 3. Open
protected static function buildSwiftMessage($to, $fromAddress, $fromName, $subject, $content, $cc = NULL, $bcc = NULL){
- Read upRead up
- Create a ticketCreate a ticket
- Exclude checks
ShortVariable
Since: 0.2
Detects when a field, local, or parameter has a very short name.
Example
class Something {
private $q = 15; // VIOLATION - Field
public static function main( array $as ) { // VIOLATION - Formal
$r = 20 + $this->q; // VIOLATION - Local
for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
$r += $this->q;
}
}
}