Le document suivant contient les résultats de PMD 6.13.0.
Rule | Violation | Ligne |
---|---|---|
ConstructorCallsOverridableMethod | Overridable method 'setSubjectId' called during object construction | 60 |
Rule | Violation | Ligne |
---|---|---|
AvoidThrowingRawExceptionTypes | Avoid throwing raw exception types. | 2648 |
Rule | Violation | Ligne |
---|---|---|
GuardLogStatement | Logger calls should be surrounded by log level guards. | 2493 |
GuardLogStatement | Logger calls should be surrounded by log level guards. | 2551 |
GuardLogStatement | Logger calls should be surrounded by log level guards. | 2568 |
Rule | Violation | Ligne |
---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 52–399 |
Rule | Violation | Ligne |
---|---|---|
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 62–64 |
UncommentedEmptyConstructor | Document empty constructor | 62–64 |
NonThreadSafeSingleton | Singleton is not thread safe | 72–76 |
NonThreadSafeSingleton | Singleton is not thread safe | 78–82 |
MissingOverride | The method 'getWorkgroup()' is missing an @Override annotation. | 201–204 |
Rule | Violation | Ligne |
---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 48–353 |
MissingOverride | The method 'newPrimaryKey(Plugin)' is missing an @Override annotation. | 71–89 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 97–111 |
MissingOverride | The method 'insert(Faq, Plugin)' is missing an @Override annotation. | 97–111 |
MissingOverride | The method 'delete(int, Plugin)' is missing an @Override annotation. | 119–127 |
MissingOverride | The method 'load(int, Plugin)' is missing an @Override annotation. | 136–156 |
MissingOverride | The method 'store(Faq, Plugin)' is missing an @Override annotation. | 164–176 |
MissingOverride | The method 'findAll(Plugin)' is missing an @Override annotation. | 183–202 |
MissingOverride | The method 'findReferenceList(Plugin)' is missing an @Override annotation. | 209–223 |
MissingOverride | The method 'findAuthorizedFaq(String, Plugin)' is missing an @Override annotation. | 231–234 |
MissingOverride | The method 'findByWorkgroup(String, Plugin)' is missing an @Override annotation. | 242–245 |
ShortVariable | Avoid variables with short names like sB | 257 |
ShortVariable | Avoid variables with short names like i | 265 |
UnusedLocalVariable | Avoid unused local variables such as 'strRoleKey'. | 267 |
AssignmentInOperand | Avoid assignments in operands | 269 |
AvoidLiteralsInIfCondition | Avoid using Literals in Conditional Statements | 269 |
MissingOverride | The method 'findBySubjectId(int, Plugin)' is missing an @Override annotation. | 317–332 |
MissingOverride | The method 'findListFaq(Plugin)' is missing an @Override annotation. | 339–352 |
Rule | Violation | Ligne |
---|---|---|
UseUtilityClass | All methods are static. Consider using a utility class instead. Alternatively, you could add a private constructor or make the class abstract to silence this warning. | 54–241 |
TooManyMethods | This class has too many methods, consider refactoring it. | 54–241 |
CollapsibleIfStatements | These nested if statements could be combined | 120–135 |
AvoidArrayLoops | System.arraycopy is more efficient | 193–196 |
Rule | Violation | Ligne |
---|---|---|
MissingOverride | The method 'canBeRemoved(String)' is missing an @Override annotation. | 57–73 |
SimplifyBooleanReturns | Avoid unnecessary if..then..else statements when returning booleans | 67–70 |
MissingOverride | The method 'getRemovalRefusedMessage(String, Locale)' is missing an @Override annotation. | 81–85 |
Rule | Violation | Ligne |
---|---|---|
MissingOverride | The method 'canBeRemoved(String)' is missing an @Override annotation. | 57–73 |
SimplifyBooleanReturns | Avoid unnecessary if..then..else statements when returning booleans | 67–70 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 67 |
MissingOverride | The method 'getRemovalRefusedMessage(String, Locale)' is missing an @Override annotation. | 81–85 |
Rule | Violation | Ligne |
---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 46–159 |
Rule | Violation | Ligne |
---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 46–129 |
Rule | Violation | Ligne |
---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 46–135 |
Rule | Violation | Ligne |
---|---|---|
UncommentedEmptyConstructor | Document empty constructor | 59–61 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 59–61 |
AvoidLiteralsInIfCondition | Avoid using Literals in Conditional Statements | 160 |
Rule | Violation | Ligne |
---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 52–399 |
MissingOverride | The method 'newPrimaryKey(Plugin)' is missing an @Override annotation. | 74–92 |
MissingOverride | The method 'insert(QuestionAnswer, Plugin)' is missing an @Override annotation. | 100–125 |
MissingOverride | The method 'delete(int, Plugin)' is missing an @Override annotation. | 133–141 |
MissingOverride | The method 'deleteAll(Plugin)' is missing an @Override annotation. | 148–154 |
MissingOverride | The method 'deleteBySubject(int, Plugin)' is missing an @Override annotation. | 162–170 |
MissingOverride | The method 'load(int, Plugin)' is missing an @Override annotation. | 179–201 |
MissingOverride | The method 'store(QuestionAnswer, Plugin)' is missing an @Override annotation. | 209–233 |
MissingOverride | The method 'findAll(Plugin)' is missing an @Override annotation. | 241–262 |
MissingOverride | The method 'findByKeywords(String, Plugin)' is missing an @Override annotation. | 271–321 |
ShortVariable | Avoid variables with short names like st | 277 |
ShortVariable | Avoid variables with short names like sB | 280 |
InsufficientStringBufferDeclaration | StringBuffer constructor is initialized with size 16, but has at least 66 characters appended. | 280 |
MissingOverride | The method 'findByIdSubject(int, Plugin)' is missing an @Override annotation. | 329–352 |
MissingOverride | The method 'countbySubject(int, Plugin)' is missing an @Override annotation. | 360–375 |
MissingOverride | The method 'getMaxOrder(int, Plugin)' is missing an @Override annotation. | 383–398 |
Rule | Violation | Ligne |
---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 53–346 |
Rule | Violation | Ligne |
---|---|---|
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 52–54 |
UncommentedEmptyConstructor | Document empty constructor | 52–54 |
CallSuperInConstructor | It is a good practice to call super() in a constructor | 52–54 |
MissingOverride | The method 'getParent(Plugin)' is missing an @Override annotation. | 79–82 |
MissingOverride | The method 'getChilds(Plugin)' is missing an @Override annotation. | 89–92 |
Rule | Violation | Ligne |
---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 49–485 |
MissingOverride | The method 'newPrimaryKey(Plugin)' is missing an @Override annotation. | 78–96 |
MissingOverride | The method 'insert(AbstractSubject, Plugin)' is missing an @Override annotation. | 104–118 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 104–118 |
MissingOverride | The method 'delete(int, Plugin)' is missing an @Override annotation. | 126–134 |
MissingOverride | The method 'load(int, Plugin)' is missing an @Override annotation. | 143–165 |
MissingOverride | The method 'store(AbstractSubject, Plugin)' is missing an @Override annotation. | 173–185 |
MissingOverride | The method 'findAll(Plugin)' is missing an @Override annotation. | 192–212 |
MissingOverride | The method 'findByIdParent(int, Plugin)' is missing an @Override annotation. | 241–262 |
MissingOverride | The method 'findByIdFaq(int, Plugin)' is missing an @Override annotation. | 270–291 |
MissingOverride | The method 'findQuestions(int, Plugin)' is missing an @Override annotation. | 299–322 |
MissingOverride | The method 'countQuestion(int, Plugin)' is missing an @Override annotation. | 330–345 |
MissingOverride | The method 'getMaxOrder(int, Plugin)' is missing an @Override annotation. | 353–368 |
MissingOverride | The method 'findByOrder(int, int, Plugin)' is missing an @Override annotation. | 377–400 |
MissingOverride | The method 'findByFaqOrder(int, int, Plugin)' is missing an @Override annotation. | 409–432 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 441–450 |
MissingOverride | The method 'insertLinkToFaq(int, int, Plugin)' is missing an @Override annotation. | 441–450 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 459–468 |
MissingOverride | The method 'deleteLinkToFaq(int, int, Plugin)' is missing an @Override annotation. | 459–468 |
MissingOverride | The method 'deleteAllLinksToFaq(int, Plugin)' is missing an @Override annotation. | 476–484 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 476–484 |
Rule | Violation | Ligne |
---|---|---|
AssignmentToNonFinalStatic | Possible unsafe assignment to a non-final static field in a constructor. | 52 |
CallSuperInConstructor | It is a good practice to call super() in a constructor | 57–63 |
NonThreadSafeSingleton | Singleton is not thread safe | 72–75 |
MissingOverride | The method 'getDAO()' is missing an @Override annotation. | 106–109 |
Rule | Violation | Ligne |
---|---|---|
CallSuperInConstructor | It is a good practice to call super() in a constructor | 54–56 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 54–56 |
UncommentedEmptyConstructor | Document empty constructor | 54–56 |
NonThreadSafeSingleton | Singleton is not thread safe | 64–68 |
MissingOverride | The method 'getParent(Plugin)' is missing an @Override annotation. | 94–97 |
MissingOverride | The method 'getChilds(Plugin)' is missing an @Override annotation. | 104–107 |
Rule | Violation | Ligne |
---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 48–447 |
MissingOverride | The method 'newPrimaryKey(Plugin)' is missing an @Override annotation. | 76–94 |
MissingOverride | The method 'insert(AbstractSubject, Plugin)' is missing an @Override annotation. | 102–117 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 102–117 |
MissingOverride | The method 'delete(int, Plugin)' is missing an @Override annotation. | 125–133 |
MissingOverride | The method 'load(int, Plugin)' is missing an @Override annotation. | 142–165 |
MissingOverride | The method 'store(AbstractSubject, Plugin)' is missing an @Override annotation. | 173–186 |
MissingOverride | The method 'findAll(Plugin)' is missing an @Override annotation. | 193–214 |
MissingOverride | The method 'findByIdParent(int, Plugin)' is missing an @Override annotation. | 222–245 |
MissingOverride | The method 'findByIdFaq(int, Plugin)' is missing an @Override annotation. | 253–275 |
MissingOverride | The method 'findQuestions(int, Plugin)' is missing an @Override annotation. | 283–309 |
MissingOverride | The method 'getMaxOrder(int, Plugin)' is missing an @Override annotation. | 317–332 |
MissingOverride | The method 'findByOrder(int, int, Plugin)' is missing an @Override annotation. | 341–363 |
MissingOverride | The method 'findByFaqOrder(int, int, Plugin)' is missing an @Override annotation. | 372–394 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 403–412 |
MissingOverride | The method 'insertLinkToFaq(int, int, Plugin)' is missing an @Override annotation. | 403–412 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 421–430 |
MissingOverride | The method 'deleteLinkToFaq(int, int, Plugin)' is missing an @Override annotation. | 421–430 |
MissingOverride | The method 'deleteAllLinksToFaq(int, Plugin)' is missing an @Override annotation. | 438–446 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 438–446 |
Rule | Violation | Ligne |
---|---|---|
AssignmentToNonFinalStatic | Possible unsafe assignment to a non-final static field in a constructor. | 57 |
CallSuperInConstructor | It is a good practice to call super() in a constructor | 62–68 |
NonThreadSafeSingleton | Singleton is not thread safe | 77–80 |
MissingOverride | The method 'getDAO()' is missing an @Override annotation. | 137–140 |
Rule | Violation | Ligne |
---|---|---|
ShortVariable | Avoid variables with short names like id | 57 |
MissingOverride | The method 'canBeRemoved(String)' is missing an @Override annotation. | 57–80 |
MissingOverride | The method 'getRemovalRefusedMessage(String, Locale)' is missing an @Override annotation. | 88–92 |
ShortVariable | Avoid variables with short names like id | 88 |
Rule | Violation | Ligne |
---|---|---|
UncommentedEmptyConstructor | Document empty constructor | 55–57 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 55–57 |
Rule | Violation | Ligne |
---|---|---|
CommentDefaultAccessModifier | To avoid mistakes add a comment at the beginning of the getInstance method if you want a default access modifier | 75–78 |
DefaultPackage | Use explicit scoping instead of the default package private level | 75–78 |
MissingOverride | The method 'newPrimaryKey(Plugin)' is missing an @Override annotation. | 89–107 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 115–133 |
MissingOverride | The method 'insert(VisitorQuestion, Plugin)' is missing an @Override annotation. | 115–133 |
MissingOverride | The method 'delete(int, Plugin)' is missing an @Override annotation. | 141–149 |
MissingOverride | The method 'load(int, Plugin)' is missing an @Override annotation. | 158–183 |
MissingOverride | The method 'store(VisitorQuestion, Plugin)' is missing an @Override annotation. | 191–206 |
MissingOverride | The method 'findAll(Plugin)' is missing an @Override annotation. | 213–237 |
MissingOverride | The method 'findByUser(int, Plugin)' is missing an @Override annotation. | 245–270 |
MissingOverride | The method 'findByTheme(int, Plugin)' is missing an @Override annotation. | 278–303 |
MissingOverride | The method 'findArchivedQuestionsByTheme(int, Plugin)' is missing an @Override annotation. | 311–337 |
Rule | Violation | Ligne |
---|---|---|
MissingOverride | The method 'register()' is missing an @Override annotation. | 90–137 |
ShortVariable | Avoid variables with short names like rt | 92 |
ShortVariable | Avoid variables with short names like p | 97 |
MissingOverride | The method 'getResourceIdList(Locale)' is missing an @Override annotation. | 144–147 |
MissingOverride | The method 'getTitle(String, Locale)' is missing an @Override annotation. | 155–160 |
Rule | Violation | Ligne |
---|---|---|
MissingOverride | The method 'init()' is missing an @Override annotation. | 49–53 |
Rule | Violation | Ligne |
---|---|---|
ExcessiveImports | A high number of imports can indicate a high degree of coupling within an object. | 34–325 |
CyclomaticComplexity | The method 'getSearchResults(int, String, Date, Date, Subject, boolean, HttpServletRequest)' has a cyclomatic complexity of 13. | 97–214 |
ExcessiveMethodLength | Avoid really long methods. | 97–214 |
MissingOverride | The method 'getSearchResults(int, String, Date, Date, Subject, boolean, HttpServletRequest)' is missing an @Override annotation. | 97–214 |
NcssCount | The method 'getSearchResults(int, String, Date, Date, Subject, boolean, HttpServletRequest)' has a NCSS line count of 65. | 97–214 |
NPathComplexity | The method 'getSearchResults(int, String, Date, Date, Subject, boolean, HttpServletRequest)' has an NPath complexity of 362 | 97–214 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 100 |
ShortVariable | Avoid variables with short names like ir | 105 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 109 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 110 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 111 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 155 |
UseStringBufferForStringAppends | Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings | 163 |
UseStringBufferForStringAppends | Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings | 166 |
OptimizableToArrayCall | This call to Collection.toArray() may be optimizable | 184 |
OptimizableToArrayCall | This call to Collection.toArray() may be optimizable | 185 |
OptimizableToArrayCall | This call to Collection.toArray() may be optimizable | 186 |
ForLoopCanBeForeach | This for loop can be replaced by a foreach loop | 200–206 |
ShortVariable | Avoid variables with short names like si | 204 |
AvoidCatchingGenericException | Avoid catching generic exceptions such as NullPointerException, RuntimeException, Exception in try-catch block | 208 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 233–255 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 237–250 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 280 |
LinguisticNaming | Linguistics Antipattern - The getter 'getListSubjects' should not return void linguistically | 313–324 |
Rule | Violation | Ligne |
---|---|---|
NonThreadSafeSingleton | Singleton is not thread safe | 72–75 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 96 |
Rule | Violation | Ligne |
---|---|---|
ExcessiveImports | A high number of imports can indicate a high degree of coupling within an object. | 34–458 |
MissingOverride | The method 'getDescription()' is missing an @Override annotation. | 99–102 |
MissingOverride | The method 'indexDocuments()' is missing an @Override annotation. | 111–122 |
AvoidCatchingGenericException | Avoid catching generic exceptions such as NullPointerException, RuntimeException, Exception in try-catch block | 148 |
AvoidCatchingGenericException | Avoid catching generic exceptions such as NullPointerException, RuntimeException, Exception in try-catch block | 175 |
MissingOverride | The method 'getDocuments(String)' is missing an @Override annotation. | 204–261 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 207 |
AvoidDeeplyNestedIfStmts | Deeply nested if..then statements are hard to read | 243–255 |
ShortVariable | Avoid variables with short names like ft | 282 |
PreserveStackTrace | New exception is thrown in catch block, original stack trace may be lost | 317 |
IdenticalCatchBranches | 'catch' branch identical to 'SAXException' branch | 319–322 |
PreserveStackTrace | New exception is thrown in catch block, original stack trace may be lost | 321 |
ShortVariable | Avoid variables with short names like sb | 326 |
ShortVariable | Avoid variables with short names like ft | 360 |
UnusedFormalParameter | Avoid unused method parameters such as 'plugin'. | 393 |
ConsecutiveAppendsShouldReuse | StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable. | 397 |
ConsecutiveAppendsShouldReuse | StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable. | 398 |
MissingOverride | The method 'getName()' is missing an @Override annotation. | 408–411 |
MissingOverride | The method 'getVersion()' is missing an @Override annotation. | 417–420 |
MissingOverride | The method 'isEnable()' is missing an @Override annotation. | 426–439 |
MissingOverride | The method 'getListType()' is missing an @Override annotation. | 444–449 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 446 |
MissingOverride | The method 'getSpecificSearchAppUrl()' is missing an @Override annotation. | 454–457 |
Rule | Violation | Ligne |
---|---|---|
UseUtilityClass | All methods are static. Consider using a utility class instead. Alternatively, you could add a private constructor or make the class abstract to silence this warning. | 13–44 |
Rule | Violation | Ligne |
---|---|---|
ExcessiveImports | A high number of imports can indicate a high degree of coupling within an object. | 34–569 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 165–167 |
UncommentedEmptyConstructor | Document empty constructor | 165–167 |
CyclomaticComplexity | The method 'getPage(HttpServletRequest, int, Plugin)' has a cyclomatic complexity of 12. | 178–237 |
MissingOverride | The method 'getPage(HttpServletRequest, int, Plugin)' is missing an @Override annotation. | 178–237 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 183 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 248 |
AvoidLiteralsInIfCondition | Avoid using Literals in Conditional Statements | 289 |
UseStringBufferForStringAppends | Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings | 336 |
NPathComplexity | The method 'getSubjectListSearch(HttpServletRequest, Plugin, Faq)' has an NPath complexity of 384 | 397–473 |
CyclomaticComplexity | The method 'getSubjectListSearch(HttpServletRequest, Plugin, Faq)' has a cyclomatic complexity of 13. | 397–473 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 451 |
ShortVariable | Avoid variables with short names like t | 470 |
Rule | Violation | Ligne |
---|---|---|
ExcessiveImports | A high number of imports can indicate a high degree of coupling within an object. | 34–2745 |
ExcessivePublicCount | This class has a bunch of public methods and attributes | 34–2745 |
MissingSerialVersionUID | Classes implementing Serializable should set a serialVersionUID | 98–2745 |
CyclomaticComplexity | The class 'HelpdeskJspBean' has a total cyclomatic complexity of 286 (highest 19). | 98–2745 |
ExcessiveClassLength | Avoid really long classes. | 98–2745 |
TooManyMethods | This class has too many methods, consider refactoring it. | 99–2745 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 281–283 |
CallSuperInConstructor | It is a good practice to call super() in a constructor | 281–283 |
UncommentedEmptyConstructor | Document empty constructor | 281–283 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 292 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 292 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 292 |
AddEmptyString | Do not add empty strings | 315 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 340 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 340 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 531 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 572 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 573 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 721 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 729 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 811 |
CyclomaticComplexity | The method 'doCreateQuestionAnswer(HttpServletRequest)' has a cyclomatic complexity of 11. | 851–925 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 854 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 854 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 864 |
CyclomaticComplexity | The method 'doActionSelectionQuestionAnswer(HttpServletRequest)' has a cyclomatic complexity of 12. | 1035–1098 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 1274 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 1323 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 1323 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 1361 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 1366 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 1366 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1400 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1401 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 1423 |
UseStringBufferForStringAppends | Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings | 1437 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 1486 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 1551 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 1551 |
CyclomaticComplexity | The method 'insertQuestionAnswers(HttpServletRequest, List, Faq, boolean, Collection)' has a cyclomatic complexity of 19. | 1568–1697 |
NPathComplexity | The method 'insertQuestionAnswers(HttpServletRequest, List, Faq, boolean, Collection)' has an NPath complexity of 216 | 1568–1697 |
ExcessiveMethodLength | Avoid really long methods. | 1568–1697 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1588 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1589 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 1714 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1714 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 1724 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1758 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 1758 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1759 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 1759 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 1768 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1807 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1857 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 1867 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1902 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 1909 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 1945 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 1945 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 1979 |
CyclomaticComplexity | The method 'doCreateTheme(HttpServletRequest)' has a cyclomatic complexity of 10. | 2014–2060 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 2024 |
CyclomaticComplexity | The method 'doModifyTheme(HttpServletRequest)' has a cyclomatic complexity of 12. | 2067–2124 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 2078 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 2088 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 2089 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 2254 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 2255 |
AddEmptyString | Do not add empty strings | 2283 |
UnusedFormalParameter | Avoid unused method parameters such as 'faq'. | 2531 |
UnnecessaryLocalBeforeReturn | Consider simply returning the value vs storing it in local variable 'nIdOrder' | 2536 |
PositionLiteralsFirstInComparisons | Position literals first in String comparisons | 2553 |
PositionLiteralsFirstInComparisons | Position literals first in String comparisons | 2570 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 2603–2604 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 2605 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 2606–2607 |
PositionLiteralsFirstInComparisons | Position literals first in String comparisons | 2620 |
PreserveStackTrace | New exception is thrown in catch block, original stack trace may be lost | 2648 |
NPathComplexity | The method 'getAuthorizedActionCollection(Faq)' has an NPath complexity of 256 | 2689–2742 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 2691 |
Rule | Violation | Ligne |
---|---|---|
ExcessiveImports | A high number of imports can indicate a high degree of coupling within an object. | 34–333 |
MissingSerialVersionUID | Classes implementing Serializable should set a serialVersionUID | 75–333 |
NcssCount | The method 'getSearch(HttpServletRequest)' has a NCSS line count of 68. | 133–234 |
NPathComplexity | The method 'getSearch(HttpServletRequest)' has an NPath complexity of 1152 | 133–234 |
ExcessiveMethodLength | Avoid really long methods. | 133–234 |
CyclomaticComplexity | The method 'getSearch(HttpServletRequest)' has a cyclomatic complexity of 12. | 133–234 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 140 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 153 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 157 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 159 |
UnusedLocalVariable | Avoid unused local variables such as 'nPageIndex'. | 159 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 229 |
ShortVariable | Avoid variables with short names like os | 263 |
UnusedFormalParameter | Avoid unused method parameters such as 'request'. | 283 |
UnusedLocalVariable | Avoid unused local variables such as 'plugin'. | 285 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 285 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 287 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 290 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 294 |
ShortVariable | Avoid variables with short names like i | 314 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 319–326 |
Rule | Violation | Ligne |
---|---|---|
ShortClassName | Avoid short class names like Faq | 47–205 |
Rule | Violation | Ligne |
---|---|---|
UnusedImports | Avoid unused imports such as 'org.apache.lucene.index.IndexOptions' | 68 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 143 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 169 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 207 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 207 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 237 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 252 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 276 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 280 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 280 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 354 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 358 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 358 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 52–399 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
ShortClassName | Avoid short class names like Faq | 4 | 47–205 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 3 | 62–64 |
UncommentedEmptyConstructor | Document empty constructor | 3 | 62–64 |
NonThreadSafeSingleton | Singleton is not thread safe | 3 | 72–76 |
NonThreadSafeSingleton | Singleton is not thread safe | 3 | 78–82 |
MissingOverride | The method 'getWorkgroup()' is missing an @Override annotation. | 3 | 201–204 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 48–353 |
MissingOverride | The method 'newPrimaryKey(Plugin)' is missing an @Override annotation. | 3 | 71–89 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 3 | 97–111 |
MissingOverride | The method 'insert(Faq, Plugin)' is missing an @Override annotation. | 3 | 97–111 |
MissingOverride | The method 'delete(int, Plugin)' is missing an @Override annotation. | 3 | 119–127 |
MissingOverride | The method 'load(int, Plugin)' is missing an @Override annotation. | 3 | 136–156 |
MissingOverride | The method 'store(Faq, Plugin)' is missing an @Override annotation. | 3 | 164–176 |
MissingOverride | The method 'findAll(Plugin)' is missing an @Override annotation. | 3 | 183–202 |
MissingOverride | The method 'findReferenceList(Plugin)' is missing an @Override annotation. | 3 | 209–223 |
MissingOverride | The method 'findAuthorizedFaq(String, Plugin)' is missing an @Override annotation. | 3 | 231–234 |
MissingOverride | The method 'findByWorkgroup(String, Plugin)' is missing an @Override annotation. | 3 | 242–245 |
ShortVariable | Avoid variables with short names like sB | 3 | 257 |
ShortVariable | Avoid variables with short names like i | 3 | 265 |
UnusedLocalVariable | Avoid unused local variables such as 'strRoleKey'. | 3 | 267 |
AssignmentInOperand | Avoid assignments in operands | 3 | 269 |
AvoidLiteralsInIfCondition | Avoid using Literals in Conditional Statements | 3 | 269 |
MissingOverride | The method 'findBySubjectId(int, Plugin)' is missing an @Override annotation. | 3 | 317–332 |
MissingOverride | The method 'findListFaq(Plugin)' is missing an @Override annotation. | 3 | 339–352 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
UseUtilityClass | All methods are static. Consider using a utility class instead. Alternatively, you could add a private constructor or make the class abstract to silence this warning. | 3 | 54–241 |
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 54–241 |
CollapsibleIfStatements | These nested if statements could be combined | 3 | 120–135 |
AvoidArrayLoops | System.arraycopy is more efficient | 3 | 193–196 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
MissingOverride | The method 'canBeRemoved(String)' is missing an @Override annotation. | 3 | 57–73 |
SimplifyBooleanReturns | Avoid unnecessary if..then..else statements when returning booleans | 3 | 67–70 |
MissingOverride | The method 'getRemovalRefusedMessage(String, Locale)' is missing an @Override annotation. | 3 | 81–85 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
MissingOverride | The method 'canBeRemoved(String)' is missing an @Override annotation. | 3 | 57–73 |
SimplifyBooleanReturns | Avoid unnecessary if..then..else statements when returning booleans | 3 | 67–70 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 3 | 67 |
MissingOverride | The method 'getRemovalRefusedMessage(String, Locale)' is missing an @Override annotation. | 3 | 81–85 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 46–159 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 46–129 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 46–135 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
UncommentedEmptyConstructor | Document empty constructor | 3 | 59–61 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 3 | 59–61 |
AvoidLiteralsInIfCondition | Avoid using Literals in Conditional Statements | 3 | 160 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 52–399 |
MissingOverride | The method 'newPrimaryKey(Plugin)' is missing an @Override annotation. | 3 | 74–92 |
MissingOverride | The method 'insert(QuestionAnswer, Plugin)' is missing an @Override annotation. | 3 | 100–125 |
MissingOverride | The method 'delete(int, Plugin)' is missing an @Override annotation. | 3 | 133–141 |
MissingOverride | The method 'deleteAll(Plugin)' is missing an @Override annotation. | 3 | 148–154 |
MissingOverride | The method 'deleteBySubject(int, Plugin)' is missing an @Override annotation. | 3 | 162–170 |
MissingOverride | The method 'load(int, Plugin)' is missing an @Override annotation. | 3 | 179–201 |
MissingOverride | The method 'store(QuestionAnswer, Plugin)' is missing an @Override annotation. | 3 | 209–233 |
MissingOverride | The method 'findAll(Plugin)' is missing an @Override annotation. | 3 | 241–262 |
MissingOverride | The method 'findByKeywords(String, Plugin)' is missing an @Override annotation. | 3 | 271–321 |
ShortVariable | Avoid variables with short names like st | 3 | 277 |
ShortVariable | Avoid variables with short names like sB | 3 | 280 |
InsufficientStringBufferDeclaration | StringBuffer constructor is initialized with size 16, but has at least 66 characters appended. | 3 | 280 |
MissingOverride | The method 'findByIdSubject(int, Plugin)' is missing an @Override annotation. | 3 | 329–352 |
MissingOverride | The method 'countbySubject(int, Plugin)' is missing an @Override annotation. | 3 | 360–375 |
MissingOverride | The method 'getMaxOrder(int, Plugin)' is missing an @Override annotation. | 3 | 383–398 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 53–346 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 3 | 52–54 |
UncommentedEmptyConstructor | Document empty constructor | 3 | 52–54 |
CallSuperInConstructor | It is a good practice to call super() in a constructor | 3 | 52–54 |
MissingOverride | The method 'getParent(Plugin)' is missing an @Override annotation. | 3 | 79–82 |
MissingOverride | The method 'getChilds(Plugin)' is missing an @Override annotation. | 3 | 89–92 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 49–485 |
MissingOverride | The method 'newPrimaryKey(Plugin)' is missing an @Override annotation. | 3 | 78–96 |
MissingOverride | The method 'insert(AbstractSubject, Plugin)' is missing an @Override annotation. | 3 | 104–118 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 3 | 104–118 |
MissingOverride | The method 'delete(int, Plugin)' is missing an @Override annotation. | 3 | 126–134 |
MissingOverride | The method 'load(int, Plugin)' is missing an @Override annotation. | 3 | 143–165 |
MissingOverride | The method 'store(AbstractSubject, Plugin)' is missing an @Override annotation. | 3 | 173–185 |
MissingOverride | The method 'findAll(Plugin)' is missing an @Override annotation. | 3 | 192–212 |
MissingOverride | The method 'findByIdParent(int, Plugin)' is missing an @Override annotation. | 3 | 241–262 |
MissingOverride | The method 'findByIdFaq(int, Plugin)' is missing an @Override annotation. | 3 | 270–291 |
MissingOverride | The method 'findQuestions(int, Plugin)' is missing an @Override annotation. | 3 | 299–322 |
MissingOverride | The method 'countQuestion(int, Plugin)' is missing an @Override annotation. | 3 | 330–345 |
MissingOverride | The method 'getMaxOrder(int, Plugin)' is missing an @Override annotation. | 3 | 353–368 |
MissingOverride | The method 'findByOrder(int, int, Plugin)' is missing an @Override annotation. | 3 | 377–400 |
MissingOverride | The method 'findByFaqOrder(int, int, Plugin)' is missing an @Override annotation. | 3 | 409–432 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 3 | 441–450 |
MissingOverride | The method 'insertLinkToFaq(int, int, Plugin)' is missing an @Override annotation. | 3 | 441–450 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 3 | 459–468 |
MissingOverride | The method 'deleteLinkToFaq(int, int, Plugin)' is missing an @Override annotation. | 3 | 459–468 |
MissingOverride | The method 'deleteAllLinksToFaq(int, Plugin)' is missing an @Override annotation. | 3 | 476–484 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 3 | 476–484 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
AssignmentToNonFinalStatic | Possible unsafe assignment to a non-final static field in a constructor. | 3 | 52 |
CallSuperInConstructor | It is a good practice to call super() in a constructor | 3 | 57–63 |
NonThreadSafeSingleton | Singleton is not thread safe | 3 | 72–75 |
MissingOverride | The method 'getDAO()' is missing an @Override annotation. | 3 | 106–109 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
CallSuperInConstructor | It is a good practice to call super() in a constructor | 3 | 54–56 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 3 | 54–56 |
UncommentedEmptyConstructor | Document empty constructor | 3 | 54–56 |
NonThreadSafeSingleton | Singleton is not thread safe | 3 | 64–68 |
MissingOverride | The method 'getParent(Plugin)' is missing an @Override annotation. | 3 | 94–97 |
MissingOverride | The method 'getChilds(Plugin)' is missing an @Override annotation. | 3 | 104–107 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 48–447 |
MissingOverride | The method 'newPrimaryKey(Plugin)' is missing an @Override annotation. | 3 | 76–94 |
MissingOverride | The method 'insert(AbstractSubject, Plugin)' is missing an @Override annotation. | 3 | 102–117 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 3 | 102–117 |
MissingOverride | The method 'delete(int, Plugin)' is missing an @Override annotation. | 3 | 125–133 |
MissingOverride | The method 'load(int, Plugin)' is missing an @Override annotation. | 3 | 142–165 |
MissingOverride | The method 'store(AbstractSubject, Plugin)' is missing an @Override annotation. | 3 | 173–186 |
MissingOverride | The method 'findAll(Plugin)' is missing an @Override annotation. | 3 | 193–214 |
MissingOverride | The method 'findByIdParent(int, Plugin)' is missing an @Override annotation. | 3 | 222–245 |
MissingOverride | The method 'findByIdFaq(int, Plugin)' is missing an @Override annotation. | 3 | 253–275 |
MissingOverride | The method 'findQuestions(int, Plugin)' is missing an @Override annotation. | 3 | 283–309 |
MissingOverride | The method 'getMaxOrder(int, Plugin)' is missing an @Override annotation. | 3 | 317–332 |
MissingOverride | The method 'findByOrder(int, int, Plugin)' is missing an @Override annotation. | 3 | 341–363 |
MissingOverride | The method 'findByFaqOrder(int, int, Plugin)' is missing an @Override annotation. | 3 | 372–394 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 3 | 403–412 |
MissingOverride | The method 'insertLinkToFaq(int, int, Plugin)' is missing an @Override annotation. | 3 | 403–412 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 3 | 421–430 |
MissingOverride | The method 'deleteLinkToFaq(int, int, Plugin)' is missing an @Override annotation. | 3 | 421–430 |
MissingOverride | The method 'deleteAllLinksToFaq(int, Plugin)' is missing an @Override annotation. | 3 | 438–446 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 3 | 438–446 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
AssignmentToNonFinalStatic | Possible unsafe assignment to a non-final static field in a constructor. | 3 | 57 |
CallSuperInConstructor | It is a good practice to call super() in a constructor | 3 | 62–68 |
NonThreadSafeSingleton | Singleton is not thread safe | 3 | 77–80 |
MissingOverride | The method 'getDAO()' is missing an @Override annotation. | 3 | 137–140 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
ShortVariable | Avoid variables with short names like id | 3 | 57 |
MissingOverride | The method 'canBeRemoved(String)' is missing an @Override annotation. | 3 | 57–80 |
MissingOverride | The method 'getRemovalRefusedMessage(String, Locale)' is missing an @Override annotation. | 3 | 88–92 |
ShortVariable | Avoid variables with short names like id | 3 | 88 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
UncommentedEmptyConstructor | Document empty constructor | 3 | 55–57 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 3 | 55–57 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
CommentDefaultAccessModifier | To avoid mistakes add a comment at the beginning of the getInstance method if you want a default access modifier | 3 | 75–78 |
DefaultPackage | Use explicit scoping instead of the default package private level | 3 | 75–78 |
MissingOverride | The method 'newPrimaryKey(Plugin)' is missing an @Override annotation. | 3 | 89–107 |
AvoidSynchronizedAtMethodLevel | Use block level rather than method level synchronization | 3 | 115–133 |
MissingOverride | The method 'insert(VisitorQuestion, Plugin)' is missing an @Override annotation. | 3 | 115–133 |
MissingOverride | The method 'delete(int, Plugin)' is missing an @Override annotation. | 3 | 141–149 |
MissingOverride | The method 'load(int, Plugin)' is missing an @Override annotation. | 3 | 158–183 |
MissingOverride | The method 'store(VisitorQuestion, Plugin)' is missing an @Override annotation. | 3 | 191–206 |
MissingOverride | The method 'findAll(Plugin)' is missing an @Override annotation. | 3 | 213–237 |
MissingOverride | The method 'findByUser(int, Plugin)' is missing an @Override annotation. | 3 | 245–270 |
MissingOverride | The method 'findByTheme(int, Plugin)' is missing an @Override annotation. | 3 | 278–303 |
MissingOverride | The method 'findArchivedQuestionsByTheme(int, Plugin)' is missing an @Override annotation. | 3 | 311–337 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
MissingOverride | The method 'register()' is missing an @Override annotation. | 3 | 90–137 |
ShortVariable | Avoid variables with short names like rt | 3 | 92 |
ShortVariable | Avoid variables with short names like p | 3 | 97 |
MissingOverride | The method 'getResourceIdList(Locale)' is missing an @Override annotation. | 3 | 144–147 |
MissingOverride | The method 'getTitle(String, Locale)' is missing an @Override annotation. | 3 | 155–160 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
MissingOverride | The method 'init()' is missing an @Override annotation. | 3 | 49–53 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
ExcessiveImports | A high number of imports can indicate a high degree of coupling within an object. | 3 | 34–325 |
CyclomaticComplexity | The method 'getSearchResults(int, String, Date, Date, Subject, boolean, HttpServletRequest)' has a cyclomatic complexity of 13. | 3 | 97–214 |
ExcessiveMethodLength | Avoid really long methods. | 3 | 97–214 |
MissingOverride | The method 'getSearchResults(int, String, Date, Date, Subject, boolean, HttpServletRequest)' is missing an @Override annotation. | 3 | 97–214 |
NcssCount | The method 'getSearchResults(int, String, Date, Date, Subject, boolean, HttpServletRequest)' has a NCSS line count of 65. | 3 | 97–214 |
NPathComplexity | The method 'getSearchResults(int, String, Date, Date, Subject, boolean, HttpServletRequest)' has an NPath complexity of 362 | 3 | 97–214 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 100 |
ShortVariable | Avoid variables with short names like ir | 3 | 105 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 109 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 110 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 111 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 155 |
UseStringBufferForStringAppends | Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings | 3 | 163 |
UseStringBufferForStringAppends | Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings | 3 | 166 |
OptimizableToArrayCall | This call to Collection.toArray() may be optimizable | 3 | 184 |
OptimizableToArrayCall | This call to Collection.toArray() may be optimizable | 3 | 185 |
OptimizableToArrayCall | This call to Collection.toArray() may be optimizable | 3 | 186 |
ForLoopCanBeForeach | This for loop can be replaced by a foreach loop | 3 | 200–206 |
ShortVariable | Avoid variables with short names like si | 3 | 204 |
AvoidCatchingGenericException | Avoid catching generic exceptions such as NullPointerException, RuntimeException, Exception in try-catch block | 3 | 208 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 3 | 233–255 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 3 | 237–250 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 280 |
LinguisticNaming | Linguistics Antipattern - The getter 'getListSubjects' should not return void linguistically | 3 | 313–324 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
ConstructorCallsOverridableMethod | Overridable method 'setSubjectId' called during object construction | 1 | 60 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
NonThreadSafeSingleton | Singleton is not thread safe | 3 | 72–75 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 96 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
ExcessiveImports | A high number of imports can indicate a high degree of coupling within an object. | 3 | 34–458 |
UnusedImports | Avoid unused imports such as 'org.apache.lucene.index.IndexOptions' | 4 | 68 |
MissingOverride | The method 'getDescription()' is missing an @Override annotation. | 3 | 99–102 |
MissingOverride | The method 'indexDocuments()' is missing an @Override annotation. | 3 | 111–122 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 143 |
AvoidCatchingGenericException | Avoid catching generic exceptions such as NullPointerException, RuntimeException, Exception in try-catch block | 3 | 148 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 169 |
AvoidCatchingGenericException | Avoid catching generic exceptions such as NullPointerException, RuntimeException, Exception in try-catch block | 3 | 175 |
MissingOverride | The method 'getDocuments(String)' is missing an @Override annotation. | 3 | 204–261 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 207 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 207 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 207 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 237 |
AvoidDeeplyNestedIfStmts | Deeply nested if..then statements are hard to read | 3 | 243–255 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 252 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 276 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 280 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 280 |
ShortVariable | Avoid variables with short names like ft | 3 | 282 |
PreserveStackTrace | New exception is thrown in catch block, original stack trace may be lost | 3 | 317 |
IdenticalCatchBranches | 'catch' branch identical to 'SAXException' branch | 3 | 319–322 |
PreserveStackTrace | New exception is thrown in catch block, original stack trace may be lost | 3 | 321 |
ShortVariable | Avoid variables with short names like sb | 3 | 326 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 354 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 358 |
UnnecessaryFullyQualifiedName | Unnecessary use of fully qualified name 'org.apache.lucene.document.Document' due to existing import 'org.apache.lucene.document.Document' | 4 | 358 |
ShortVariable | Avoid variables with short names like ft | 3 | 360 |
UnusedFormalParameter | Avoid unused method parameters such as 'plugin'. | 3 | 393 |
ConsecutiveAppendsShouldReuse | StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable. | 3 | 397 |
ConsecutiveAppendsShouldReuse | StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable. | 3 | 398 |
MissingOverride | The method 'getName()' is missing an @Override annotation. | 3 | 408–411 |
MissingOverride | The method 'getVersion()' is missing an @Override annotation. | 3 | 417–420 |
MissingOverride | The method 'isEnable()' is missing an @Override annotation. | 3 | 426–439 |
MissingOverride | The method 'getListType()' is missing an @Override annotation. | 3 | 444–449 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 446 |
MissingOverride | The method 'getSpecificSearchAppUrl()' is missing an @Override annotation. | 3 | 454–457 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
UseUtilityClass | All methods are static. Consider using a utility class instead. Alternatively, you could add a private constructor or make the class abstract to silence this warning. | 3 | 13–44 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
ExcessiveImports | A high number of imports can indicate a high degree of coupling within an object. | 3 | 34–569 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 3 | 165–167 |
UncommentedEmptyConstructor | Document empty constructor | 3 | 165–167 |
CyclomaticComplexity | The method 'getPage(HttpServletRequest, int, Plugin)' has a cyclomatic complexity of 12. | 3 | 178–237 |
MissingOverride | The method 'getPage(HttpServletRequest, int, Plugin)' is missing an @Override annotation. | 3 | 178–237 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 183 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 3 | 248 |
AvoidLiteralsInIfCondition | Avoid using Literals in Conditional Statements | 3 | 289 |
UseStringBufferForStringAppends | Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings | 3 | 336 |
NPathComplexity | The method 'getSubjectListSearch(HttpServletRequest, Plugin, Faq)' has an NPath complexity of 384 | 3 | 397–473 |
CyclomaticComplexity | The method 'getSubjectListSearch(HttpServletRequest, Plugin, Faq)' has a cyclomatic complexity of 13. | 3 | 397–473 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 3 | 451 |
ShortVariable | Avoid variables with short names like t | 3 | 470 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
ExcessiveImports | A high number of imports can indicate a high degree of coupling within an object. | 3 | 34–2745 |
ExcessivePublicCount | This class has a bunch of public methods and attributes | 3 | 34–2745 |
MissingSerialVersionUID | Classes implementing Serializable should set a serialVersionUID | 3 | 98–2745 |
CyclomaticComplexity | The class 'HelpdeskJspBean' has a total cyclomatic complexity of 286 (highest 19). | 3 | 98–2745 |
ExcessiveClassLength | Avoid really long classes. | 3 | 98–2745 |
TooManyMethods | This class has too many methods, consider refactoring it. | 3 | 99–2745 |
UnnecessaryConstructor | Avoid unnecessary constructors - the compiler will generate these for you | 3 | 281–283 |
CallSuperInConstructor | It is a good practice to call super() in a constructor | 3 | 281–283 |
UncommentedEmptyConstructor | Document empty constructor | 3 | 281–283 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 292 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 3 | 292 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 292 |
AddEmptyString | Do not add empty strings | 3 | 315 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 3 | 340 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 340 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 531 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 572 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 573 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 3 | 721 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 3 | 729 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 811 |
CyclomaticComplexity | The method 'doCreateQuestionAnswer(HttpServletRequest)' has a cyclomatic complexity of 11. | 3 | 851–925 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 854 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 854 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 864 |
CyclomaticComplexity | The method 'doActionSelectionQuestionAnswer(HttpServletRequest)' has a cyclomatic complexity of 12. | 3 | 1035–1098 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 1274 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 1323 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 3 | 1323 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 3 | 1361 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 1366 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 3 | 1366 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1400 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1401 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 1423 |
UseStringBufferForStringAppends | Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings | 3 | 1437 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 3 | 1486 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 3 | 1551 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 1551 |
CyclomaticComplexity | The method 'insertQuestionAnswers(HttpServletRequest, List, Faq, boolean, Collection)' has a cyclomatic complexity of 19. | 3 | 1568–1697 |
NPathComplexity | The method 'insertQuestionAnswers(HttpServletRequest, List, Faq, boolean, Collection)' has an NPath complexity of 216 | 3 | 1568–1697 |
ExcessiveMethodLength | Avoid really long methods. | 3 | 1568–1697 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1588 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1589 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 1714 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1714 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 3 | 1724 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1758 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 1758 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1759 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 3 | 1759 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 3 | 1768 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1807 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1857 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 3 | 1867 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1902 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 3 | 1909 |
UseConcurrentHashMap | If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation | 3 | 1945 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 1945 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 1979 |
CyclomaticComplexity | The method 'doCreateTheme(HttpServletRequest)' has a cyclomatic complexity of 10. | 3 | 2014–2060 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 2024 |
CyclomaticComplexity | The method 'doModifyTheme(HttpServletRequest)' has a cyclomatic complexity of 12. | 3 | 2067–2124 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 2078 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 2088 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 2089 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 2254 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 2255 |
AddEmptyString | Do not add empty strings | 3 | 2283 |
GuardLogStatement | Logger calls should be surrounded by log level guards. | 2 | 2493 |
UnusedFormalParameter | Avoid unused method parameters such as 'faq'. | 3 | 2531 |
UnnecessaryLocalBeforeReturn | Consider simply returning the value vs storing it in local variable 'nIdOrder' | 3 | 2536 |
GuardLogStatement | Logger calls should be surrounded by log level guards. | 2 | 2551 |
PositionLiteralsFirstInComparisons | Position literals first in String comparisons | 3 | 2553 |
GuardLogStatement | Logger calls should be surrounded by log level guards. | 2 | 2568 |
PositionLiteralsFirstInComparisons | Position literals first in String comparisons | 3 | 2570 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 2603–2604 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 2605 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 2606–2607 |
PositionLiteralsFirstInComparisons | Position literals first in String comparisons | 3 | 2620 |
PreserveStackTrace | New exception is thrown in catch block, original stack trace may be lost | 3 | 2648 |
AvoidThrowingRawExceptionTypes | Avoid throwing raw exception types. | 1 | 2648 |
NPathComplexity | The method 'getAuthorizedActionCollection(Faq)' has an NPath complexity of 256 | 3 | 2689–2742 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 2691 |
Rule | Violation | Priority | Ligne |
---|---|---|---|
ExcessiveImports | A high number of imports can indicate a high degree of coupling within an object. | 3 | 34–333 |
MissingSerialVersionUID | Classes implementing Serializable should set a serialVersionUID | 3 | 75–333 |
NcssCount | The method 'getSearch(HttpServletRequest)' has a NCSS line count of 68. | 3 | 133–234 |
NPathComplexity | The method 'getSearch(HttpServletRequest)' has an NPath complexity of 1152 | 3 | 133–234 |
ExcessiveMethodLength | Avoid really long methods. | 3 | 133–234 |
CyclomaticComplexity | The method 'getSearch(HttpServletRequest)' has a cyclomatic complexity of 12. | 3 | 133–234 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 140 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 3 | 153 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 3 | 157 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 159 |
UnusedLocalVariable | Avoid unused local variables such as 'nPageIndex'. | 3 | 159 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 3 | 229 |
ShortVariable | Avoid variables with short names like os | 3 | 263 |
UnusedFormalParameter | Avoid unused method parameters such as 'request'. | 3 | 283 |
UnusedLocalVariable | Avoid unused local variables such as 'plugin'. | 3 | 285 |
PrematureDeclaration | Avoid declaring a variable if it is unreferenced before a possible exit point. | 3 | 285 |
UseCollectionIsEmpty | Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty() | 3 | 287 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 290 |
UseDiamondOperator | Explicit type arguments can be replaced by Diamond Operator | 3 | 294 |
ShortVariable | Avoid variables with short names like i | 3 | 314 |
ConfusingTernary | Avoid if (x != y) ..; else ..; | 3 | 319–326 |