{- | Copyright: (c) 2020 Kowainik SPDX-License-Identifier: MPL-2.0 Maintainer: Kowainik Contains all 'Inspection's for style improvements. The __style__ inspections are in ranges: * @STAN-0301 .. STAN-0400@ -} module Stan.Inspection.Style ( -- * Style inspections -- *** Missing fixity stan0301 -- *** Too big tuples , stan0302 -- * All inspections , styleInspectionsMap ) where import Relude.Extra.Tuple (fmapToFst) import Stan.Core.Id (Id (..)) import Stan.Inspection (Inspection (..), InspectionAnalysis (..), InspectionsMap) import Stan.Severity (Severity (Style)) import qualified Stan.Category as Category -- | All anti-pattern 'Inspection's map from 'Id's. styleInspectionsMap :: InspectionsMap styleInspectionsMap = fromList $ fmapToFst inspectionId [ stan0301 , stan0302 ] -- | 'Inspection' — missing fixity declaration @STAN-0301@. stan0301 :: Inspection stan0301 = Inspection { inspectionId = Id "STAN-0301" , inspectionName = "Missing fixity declaration for operator" , inspectionDescription = "Using the implicit default fixity for operator: infixl 9" , inspectionSolution = [ "Add 'infix[l|r]' declaration to the operator with explicit precedence" ] , inspectionCategory = Category.syntax :| [] , inspectionSeverity = Style , inspectionAnalysis = Infix } -- | 'Inspection' — to big tuples @STAN-0302@. stan0302 :: Inspection stan0302 = Inspection { inspectionId = Id "STAN-0302" , inspectionName = "Big tuples" , inspectionDescription = "Using tuples of big size (>= 4) can decrease code readability" , inspectionSolution = [ "Consider defining and using a custom data type to improve code comprehension" ] , inspectionCategory = Category.antiPattern :| [Category.syntax] , inspectionSeverity = Style , inspectionAnalysis = BigTuples }