@@ -8,9 +8,10 @@ import System.IO (hFlush, stdout, hPutStrLn, stderr)
88import Data.Text (Text )
99import qualified Data.Text as T
1010import qualified Data.Text.IO as TIO
11+ import qualified Data.ByteString.Lazy.Char8 as BL8
1112import System.Directory (doesFileExist , doesDirectoryExist , listDirectory , getModificationTime )
1213import System.FilePath ((</>) , takeExtension )
13- import Control.Monad (forM , filterM , when , unless , forever )
14+ import Control.Monad (forM , forM_ , filterM , when , unless , forever )
1415import Control.Concurrent (threadDelay )
1516import Data.Either (partitionEithers )
1617import Data.List (isPrefixOf , isSuffixOf )
@@ -21,14 +22,14 @@ import qualified Data.Map.Strict as Map
2122import Sanctify.Parser
2223import Sanctify.AST
2324import Sanctify.Analysis.Security
24- import Sanctify.Analysis.Types
25+ import Sanctify.Analysis.Types ( emptyTypeContext )
2526import Sanctify.WordPress.Constraints
2627import Sanctify.Transform.StrictTypes
2728import Sanctify.Transform.Sanitize
2829import Sanctify.Transform.TypeHints
29- import Sanctify.Emit
30+ import Sanctify.Emit ( emitPhp , emitPhpIniRecommendations , emitNginxRules , emitGuixOverrides )
3031import Sanctify.Config
31- import Sanctify.Report
32+ import qualified Sanctify.Report as SReport
3233
3334-- | CLI options
3435data Options = Options
@@ -490,7 +491,7 @@ fixCommand path = fixOnce (Options (Fix path) False False FormatText [] [] False
490491applyTransforms :: PhpFile -> PhpFile
491492applyTransforms = addStrictTypes . addAbspathCheck . addTypeHintsFile
492493 where
493- addTypeHintsFile file = addAllTypeHints emptyContext file
494+ addTypeHintsFile file = addAllTypeHints emptyTypeContext file
494495
495496-- | Enhanced report command with multiple output formats
496497reportCommandNew :: Options -> FilePath -> IO ()
@@ -503,29 +504,29 @@ reportCommandNew opts path = do
503504 fileReports <- forM files $ \ file -> do
504505 content <- TIO. readFile file
505506 case parsePhpString file content of
506- Left _ -> pure $ generateFileReport file [] [] 0 0 False
507+ Left _ -> pure $ SReport. generateFileReport file [] [] 0 0 False
507508 Right ast -> do
508509 let secIssues = filterIssues opts $ analyzeSecurityIssues ast
509510 let wpIssues = if isWordPressCode ast
510511 then checkWordPressConstraints ast
511512 else []
512513 let autoFixed = length $ filter (canAutoFix . issueType) secIssues
513514 let manual = length secIssues - autoFixed
514- pure $ generateFileReport file secIssues wpIssues autoFixed manual False
515+ pure $ SReport. generateFileReport file secIssues wpIssues autoFixed manual False
515516
516517 case optFormat opts of
517518 FormatText -> do
518- report <- generateReport defaultConfig fileReports
519- TIO. putStrLn $ renderText report
519+ report <- SReport. generateReport defaultConfig fileReports
520+ TIO. putStrLn $ SReport. renderText report
520521 FormatJSON -> do
521- report <- generateReport defaultConfig fileReports
522- TIO .putStrLn $ renderJSON report
522+ report <- SReport. generateReport defaultConfig fileReports
523+ BL8 .putStrLn $ SReport. renderJson report
523524 FormatSARIF -> do
524- report <- generateReport defaultConfig fileReports
525- TIO .putStrLn $ renderSARIF report
525+ report <- SReport. generateReport defaultConfig fileReports
526+ BL8 .putStrLn $ SReport. renderSarif report
526527 FormatHTML -> do
527- report <- generateReport defaultConfig fileReports
528- TIO. putStrLn $ renderHTML report
528+ report <- SReport. generateReport defaultConfig fileReports
529+ TIO. putStrLn $ SReport. renderHtml report
529530 where
530531 canAutoFix :: IssueType -> Bool
531532 canAutoFix MissingStrictTypes = True
0 commit comments