DeveloperWorkflow/CodeReview.psm1
|
# Code Review Module for MiMo CLI # Provides code review and analysis capabilities function Invoke-MiMoCodeReview { [CmdletBinding()] param( [Parameter(Mandatory=$true)] [string]$FilePath, [string]$ReviewType = "basic" ) Write-Host "Starting code review for: $FilePath" # Read file content $content = Get-Content -Path $FilePath -Raw # Perform review based on type $reviewResults = @{ File = $FilePath Type = $ReviewType Issues = @() Score = 0 Recommendations = @() } # Basic review checks if ($content.Length -eq 0) { $reviewResults.Issues += "File is empty" } # Check for common issues if ($content -match "TODO|FIXME|HACK") { $reviewResults.Issues += "Contains TODO/FIXME/HACK comments" } if ($content -match "console\.log|debugger") { $reviewResults.Issues += "Contains debugging statements" } # Calculate score $reviewResults.Score = 100 - ($reviewResults.Issues.Count * 10) # Add recommendations if ($reviewResults.Issues.Count -gt 0) { $reviewResults.Recommendations += "Address identified issues" } Write-Host "Code review completed" Write-Host "Score: $($reviewResults.Score)/100" Write-Host "Issues found: $($reviewResults.Issues.Count)" return $reviewResults } function Get-MiMoCodeMetrics { param([string]$FilePath) $content = Get-Content -Path $FilePath $metrics = @{ File = $FilePath Lines = $content.Count Characters = ($content | Measure-Object -Character).Characters Words = ($content | Measure-Object -Word).Words Functions = ($content | Select-String -Pattern "function\s+\w+" | Measure-Object).Count Classes = ($content | Select-String -Pattern "class\s+\w+" | Measure-Object).Count Comments = ($content | Select-String -Pattern "//|/\*|\*" | Measure-Object).Count } return $metrics } function New-MiMoReviewReport { param( [hashtable]$ReviewResults, [string]$OutputPath ) $report = @" # Code Review Report ## File: $($ReviewResults.File) ## Type: $($ReviewResults.Type) ## Score: $($ReviewResults.Score)/100 ## Issues Found: $($ReviewResults.Issues | ForEach-Object { "- $_" } | Out-String) ## Recommendations: $($ReviewResults.Recommendations | ForEach-Object { "- $_" } | Out-String) ## Generated: $(Get-Date) "@ if ($OutputPath) { $report | Out-File -FilePath $OutputPath -Encoding UTF8 Write-Host "Review report saved to: $OutputPath" } return $report } # Export functions Export-ModuleMember -Function Invoke-MiMoCodeReview, Get-MiMoCodeMetrics, New-MiMoReviewReport |