PowerShell: Quellcodekommentierung vor Release bereinigen

13. Oktober 2015 00:17

Um die in der Entwicklungsphase auflaufenden internen Kommentare zu Änderungsanforderungen (Change Requests) vor einem Release wieder zu bereinigen, können diese mit PowerShell mit minimalem Aufwand entfernt werden, wenn die betroffenen Zeilen eindeutig erkennbar sind.

Im Select-String-Befehl können mehrere Suchmuster kombiniert werden, die wahlweise als einschließend 'match' (-AllMatches,-SimpleMatch)) oder ausschließend (-notmatch) definiert werden können. Bei letzterem kann aus einem Objektpaket ein neues erzeugt werden, welches nur noch den geänderten Code und die dauerhaften Mergemarken enthält. Die temporären Kommentarzeilen aus dem Documentation Header und im Quellcode werden dabei entfernt. Gelesen wird die Datei über Get-Content.

CodeComment0.jpg

Nach Ausführung des Skripts sind die temporären Kommentierungen in der Ausgabedatei entfernt.
CodeComment1.jpg

CodeComment2.jpg


Codebeispiel
Code:
get-content C:\temp\obj.txt -encoding oem | select-string -pattern "CRQ_0|     Chge.Rqst. |     =================" -notmatch | Out-File c:\temp\objclean.txt -Width 1024 -Encoding oem
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Strings optional austauschen

21. Oktober 2015 15:32

in dieser Variante wird über einen zusätzlichen Einschub in die Pipeline mit
Code:
Foreach-object {$_ -replace 'DEU=','DEA='} |

der Sprachcode der Ausgabedatei von DEU in DEA geändert.
Code:
get-content C:\temp\obj.txt -encoding oem | select-string -pattern "CRQ_0|     Chge.Rqst. |     =================" -notmatch | Foreach-object {$_ -replace 'DEU=','DEA='} | Out-File c:\temp\objcleanDEA.txt -Width 1024 -Encoding oem


Zum Einsatz von der $_-Variable:
Introduction to the PowerShell Dollar Underscore Variable