diff --git a/pmd-custom_ruleset.xml b/pmd-custom_ruleset.xml new file mode 100644 index 000000000000..19bb1c7968f0 --- /dev/null +++ b/pmd-custom_ruleset.xml @@ -0,0 +1,28 @@ + + + + Custom PMD checks for TheAlgorithms/Java + + + + Avoid using the main method. + + 3 + + + + + + + + + diff --git a/pmd-exclude.properties b/pmd-exclude.properties index 1848412c9d30..4c0ed625d884 100644 --- a/pmd-exclude.properties +++ b/pmd-exclude.properties @@ -1,64 +1,120 @@ +com.thealgorithms.ciphers.AES=UselessMainMethod +com.thealgorithms.ciphers.AESEncryption=UselessMainMethod com.thealgorithms.ciphers.AffineCipher=UselessParentheses com.thealgorithms.ciphers.DES=UselessParentheses +com.thealgorithms.ciphers.ProductCipher=UselessMainMethod com.thealgorithms.ciphers.RSA=UselessParentheses -com.thealgorithms.conversions.AnyBaseToAnyBase=UselessParentheses +com.thealgorithms.conversions.AnyBaseToAnyBase=UselessMainMethod,UselessParentheses com.thealgorithms.conversions.AnytoAny=UselessParentheses +com.thealgorithms.conversions.RgbHsvConversion=UselessMainMethod com.thealgorithms.datastructures.crdt.Pair=UnusedPrivateField com.thealgorithms.datastructures.graphs.AStar=UselessParentheses com.thealgorithms.datastructures.graphs.AdjacencyMatrixGraph=CollapsibleIfStatements,UnnecessaryFullyQualifiedName,UselessParentheses +com.thealgorithms.datastructures.graphs.BellmanFord=UselessMainMethod com.thealgorithms.datastructures.graphs.BipartiteGraphDFS=CollapsibleIfStatements +com.thealgorithms.datastructures.graphs.ConnectedComponent=UselessMainMethod +com.thealgorithms.datastructures.graphs.Cycles=UselessMainMethod +com.thealgorithms.datastructures.graphs.Graphs=UselessMainMethod +com.thealgorithms.datastructures.graphs.KahnsAlgorithm=UselessMainMethod +com.thealgorithms.datastructures.graphs.MatrixGraphs=UselessMainMethod com.thealgorithms.datastructures.hashmap.hashing.HashMapCuckooHashing=UselessParentheses +com.thealgorithms.datastructures.hashmap.hashing.MainCuckooHashing=UselessMainMethod com.thealgorithms.datastructures.heaps.FibonacciHeap=UselessParentheses com.thealgorithms.datastructures.heaps.HeapNode=UselessParentheses com.thealgorithms.datastructures.lists.DoublyLinkedList=UselessParentheses +com.thealgorithms.datastructures.lists.Link=UselessMainMethod +com.thealgorithms.datastructures.lists.RandomNode=UselessMainMethod com.thealgorithms.datastructures.lists.SearchSinglyLinkedListRecursion=UselessParentheses -com.thealgorithms.datastructures.lists.SinglyLinkedList=UnusedLocalVariable +com.thealgorithms.datastructures.lists.SinglyLinkedList=UnusedLocalVariable,UselessMainMethod +com.thealgorithms.datastructures.queues.Deque=UselessMainMethod com.thealgorithms.datastructures.queues.PriorityQueue=UselessParentheses +com.thealgorithms.datastructures.trees.BSTRecursiveGeneric=UselessMainMethod com.thealgorithms.datastructures.trees.CheckBinaryTreeIsValidBST=UselessParentheses +com.thealgorithms.datastructures.trees.LCA=UselessMainMethod +com.thealgorithms.datastructures.trees.NearestRightKey=UselessMainMethod +com.thealgorithms.datastructures.trees.PrintTopViewofTree=UselessMainMethod com.thealgorithms.datastructures.trees.SegmentTree=UselessParentheses com.thealgorithms.devutils.nodes.LargeTreeNode=UselessParentheses com.thealgorithms.devutils.nodes.SimpleNode=UselessParentheses com.thealgorithms.devutils.nodes.SimpleTreeNode=UselessParentheses com.thealgorithms.devutils.nodes.TreeNode=UselessParentheses -com.thealgorithms.divideandconquer.ClosestPair=UnnecessaryFullyQualifiedName,UselessParentheses +com.thealgorithms.divideandconquer.ClosestPair=UnnecessaryFullyQualifiedName,UselessMainMethod,UselessParentheses com.thealgorithms.divideandconquer.Point=UselessParentheses +com.thealgorithms.dynamicprogramming.CatalanNumber=UselessMainMethod +com.thealgorithms.dynamicprogramming.EggDropping=UselessMainMethod +com.thealgorithms.dynamicprogramming.LongestPalindromicSubsequence=UselessMainMethod com.thealgorithms.dynamicprogramming.WineProblem=UselessParentheses com.thealgorithms.maths.BinomialCoefficient=UselessParentheses com.thealgorithms.maths.Complex=UselessParentheses com.thealgorithms.maths.DistanceFormulaTest=UnnecessaryFullyQualifiedName +com.thealgorithms.maths.EulerMethod=UselessMainMethod +com.thealgorithms.maths.GCDRecursion=UselessMainMethod com.thealgorithms.maths.Gaussian=UselessParentheses com.thealgorithms.maths.GcdSolutionWrapper=UselessParentheses com.thealgorithms.maths.HeronsFormula=UselessParentheses +com.thealgorithms.maths.JugglerSequence=UselessMainMethod com.thealgorithms.maths.KaprekarNumbers=UselessParentheses -com.thealgorithms.maths.KeithNumber=UselessParentheses +com.thealgorithms.maths.KeithNumber=UselessMainMethod,UselessParentheses com.thealgorithms.maths.LeonardoNumber=UselessParentheses -com.thealgorithms.maths.LinearDiophantineEquationsSolver=UselessParentheses +com.thealgorithms.maths.LinearDiophantineEquationsSolver=UselessMainMethod,UselessParentheses +com.thealgorithms.maths.MagicSquare=UselessMainMethod +com.thealgorithms.maths.PiNilakantha=UselessMainMethod +com.thealgorithms.maths.Prime.PrimeCheck=UselessMainMethod +com.thealgorithms.maths.PythagoreanTriple=UselessMainMethod com.thealgorithms.maths.RomanNumeralUtil=UselessParentheses com.thealgorithms.maths.SecondMinMax=UselessParentheses com.thealgorithms.maths.SecondMinMaxTest=UnnecessaryFullyQualifiedName +com.thealgorithms.maths.SimpsonIntegration=UselessMainMethod com.thealgorithms.maths.StandardDeviation=UselessParentheses com.thealgorithms.maths.SumOfArithmeticSeries=UselessParentheses -com.thealgorithms.maths.TrinomialTriangle=UselessParentheses +com.thealgorithms.maths.TrinomialTriangle=UselessMainMethod,UselessParentheses +com.thealgorithms.maths.VectorCrossProduct=UselessMainMethod com.thealgorithms.maths.Volume=UselessParentheses +com.thealgorithms.matrix.RotateMatrixBy90Degrees=UselessMainMethod com.thealgorithms.misc.Sparsity=UselessParentheses -com.thealgorithms.others.CRC16=UselessParentheses -com.thealgorithms.others.Damm=UnnecessaryFullyQualifiedName -com.thealgorithms.others.Luhn=UnnecessaryFullyQualifiedName -com.thealgorithms.others.Mandelbrot=UselessParentheses -com.thealgorithms.others.MiniMaxAlgorithm=UselessParentheses -com.thealgorithms.others.PageRank=UselessParentheses -com.thealgorithms.others.PerlinNoise=UselessParentheses +com.thealgorithms.others.BankersAlgorithm=UselessMainMethod +com.thealgorithms.others.BrianKernighanAlgorithm=UselessMainMethod +com.thealgorithms.others.CRC16=UselessMainMethod,UselessParentheses +com.thealgorithms.others.CRC32=UselessMainMethod +com.thealgorithms.others.Damm=UnnecessaryFullyQualifiedName,UselessMainMethod +com.thealgorithms.others.Dijkstra=UselessMainMethod +com.thealgorithms.others.GaussLegendre=UselessMainMethod +com.thealgorithms.others.HappyNumbersSeq=UselessMainMethod +com.thealgorithms.others.Huffman=UselessMainMethod +com.thealgorithms.others.InsertDeleteInArray=UselessMainMethod +com.thealgorithms.others.KochSnowflake=UselessMainMethod +com.thealgorithms.others.Krishnamurthy=UselessMainMethod +com.thealgorithms.others.LinearCongruentialGenerator=UselessMainMethod +com.thealgorithms.others.Luhn=UnnecessaryFullyQualifiedName,UselessMainMethod +com.thealgorithms.others.Mandelbrot=UselessMainMethod,UselessParentheses +com.thealgorithms.others.MiniMaxAlgorithm=UselessMainMethod,UselessParentheses +com.thealgorithms.others.PageRank=UselessMainMethod,UselessParentheses +com.thealgorithms.others.PerlinNoise=UselessMainMethod,UselessParentheses com.thealgorithms.others.QueueUsingTwoStacks=UselessParentheses -com.thealgorithms.others.Trieac=UselessParentheses -com.thealgorithms.others.Verhoeff=UnnecessaryFullyQualifiedName +com.thealgorithms.others.Trieac=UselessMainMethod,UselessParentheses +com.thealgorithms.others.Verhoeff=UnnecessaryFullyQualifiedName,UselessMainMethod +com.thealgorithms.puzzlesandgames.Sudoku=UselessMainMethod +com.thealgorithms.searches.HowManyTimesRotated=UselessMainMethod com.thealgorithms.searches.InterpolationSearch=UselessParentheses com.thealgorithms.searches.KMPSearch=UselessParentheses com.thealgorithms.searches.RabinKarpAlgorithm=UselessParentheses +com.thealgorithms.searches.RecursiveBinarySearch=UselessMainMethod +com.thealgorithms.sorts.BogoSort=UselessMainMethod com.thealgorithms.sorts.CircleSort=EmptyControlStatement com.thealgorithms.sorts.DutchNationalFlagSort=UselessParentheses com.thealgorithms.sorts.MergeSortNoExtraSpace=UselessParentheses com.thealgorithms.sorts.RadixSort=UselessParentheses +com.thealgorithms.sorts.TreeSort=UselessMainMethod com.thealgorithms.sorts.WiggleSort=UselessParentheses +com.thealgorithms.stacks.LargestRectangle=UselessMainMethod +com.thealgorithms.stacks.MaximumMinimumWindow=UselessMainMethod com.thealgorithms.stacks.PostfixToInfix=UselessParentheses +com.thealgorithms.strings.Alphabetical=UselessMainMethod com.thealgorithms.strings.HorspoolSearch=UnnecessaryFullyQualifiedName,UselessParentheses +com.thealgorithms.strings.KMP=UselessMainMethod +com.thealgorithms.strings.Lower=UselessMainMethod com.thealgorithms.strings.Palindrome=UselessParentheses +com.thealgorithms.strings.Pangram=UselessMainMethod +com.thealgorithms.strings.RabinKarp=UselessMainMethod +com.thealgorithms.strings.Rotation=UselessMainMethod +com.thealgorithms.strings.Upper=UselessMainMethod diff --git a/pom.xml b/pom.xml index 47506868a02b..eaf71ca899cc 100644 --- a/pom.xml +++ b/pom.xml @@ -143,6 +143,10 @@ maven-pmd-plugin 3.26.0 + + /rulesets/java/maven-pmd-plugin-default.xml + file://${basedir}/pmd-custom_ruleset.xml + true true false