File tree Expand file tree Collapse file tree 2 files changed +75
-0
lines changed Expand file tree Collapse file tree 2 files changed +75
-0
lines changed Original file line number Diff line number Diff line change 1+ function Get-RulesFromCSV {
2+ param (
3+ [ValidateSet (' c' , ' cpp' , ' all' )]
4+ [string ]
5+ $Language = ' all' )
6+
7+
8+ $csvFile = (Join-Path (Get-RepositoryRoot ) " rules.csv" )
9+
10+ Write-Host " Loading rules for language=$Language from file $csvFile ..."
11+
12+ $csv = Import-Csv $csvFile
13+ $filteredCSV = @ ()
14+ # don't filter if not neeeded
15+ if ($Language -eq ' all' ){
16+ $filteredCSV = $csv
17+ }else {
18+ foreach ($rule in $csv ){
19+ if ($rule.Language -eq $Language ){
20+ $filteredCSV += $rule
21+ }
22+ }
23+ }
24+
25+ Write-Host " Loaded $ ( $filteredCSV.Length ) rules."
26+
27+ return $csv
28+
29+ }
Original file line number Diff line number Diff line change 1+ # !/usr/bin/env pwsh
2+ param (
3+ [ValidateSet (' c' , ' cpp' , ' all' )]
4+ [string ]
5+ $Language = ' all' ,
6+ [switch ]
7+ $CIMode
8+
9+ )
10+
11+ Import-Module - Name " $PSScriptRoot \..\PSCodingStandards\CodingStandards"
12+
13+ # load the rules.
14+ $rules = Get-RulesFromCSV - Language $Language
15+
16+ # find out duplicates
17+ $counter = @ {}
18+
19+ foreach ($rule in $rules ){
20+ if ($counter.Contains ($rule.ID )){
21+ $counter [$rule.ID ] += $rule
22+ }else {
23+ $counter [$rule.ID ] = @ ()
24+ $counter [$rule.ID ] += $rule
25+ }
26+ }
27+
28+ $duplicates = @ ()
29+ $numDuplicates = 0
30+
31+ foreach ($k in $counter.Keys ){
32+ if ($counter [$k ].Count -gt 1 ){
33+ $numDuplicates = $numDuplicates + 1
34+ foreach ($v in $counter [$k ]){
35+ $duplicates += $v
36+ }
37+ }
38+ }
39+
40+ $duplicates | Format-Table
41+
42+ if (($CIMode ) -and ($numDuplicates -gt 0 )){
43+ throw " Found $numDuplicates duplicate Rule IDs"
44+ }else {
45+ Write-Host " Found $numDuplicates duplicate Rule IDs"
46+ }
You can’t perform that action at this time.
0 commit comments