Task: MIL-007#6
4.9 KiB
Dette er en oversættelse af
QualityChecksCSharp. Den engelske side er autoritativ, og ændringer her bliver overskrevet, næste gang wikien publiceres.
English | Dansk | Bahasa Melayu
Aflæsning af resultater fra kvalitetskontrol af C#
Sådan kalder en softwareudvikler den fælles kvalitetskontrol af C#, aflæser en mislykket kørsel og får den til at bestå. Workflowet kontrollerer formateringen og bygger en solution eller et projekt med advarsler som fejl, på et præcist .NET SDK i version 10 eller nyere, ændrer ingen fil og kræver ingen secret. Dets kontrakt er ADR-0008 i dette repository.
Kald af workflowet
name: Quality C#
on:
pull_request:
push:
branches: [ main ]
jobs:
quality:
permissions:
contents: read
uses: TirSystem/github-action/.gitea/workflows/quality-checks-csharp.yml@v1
with:
project: src/App.sln
| Input | Standard | Betydning |
|---|---|---|
working-directory |
. |
Mappe, relativt til repositoryets rod, hvis filer kontrolleres |
project |
tom | Solution- eller projektfil, relativt til working-directory; tom bruger den eneste sporede *.sln eller *.slnx, ellers den eneste *.csproj, der er sporet dér |
dotnet-sdk-version |
10.0.401 |
Præcis version af .NET SDK, 10 eller nyere; en kanal som 10.0, et interval og en version under 10 afvises |
tools-ref |
v1 |
Tag eller gren i TirSystem/github-action, hvorfra scriptet tools/quality-checks-csharp.sh hentes |
Henvis til workflowet ved major-tagget (@v1) eller et præcist tag, aldrig ved main. Et kald ved et præcist tag er kun fuldt fastlåst, når tools-ref angiver samme tag. Se opgraderingsvejledningen. SDK-versionen er præcis: at hæve standardværdien er en ny udgivelse af dette repository, ikke en stille ændring.
Hvad repositoryet skal have
- En solution eller et projekt, der bygger med SDK'et. Flere kandidater kræver inputtet
project; C#-filer uden solution eller projekt fejler med[configuration]. - Netværk:
dotnet formatogdotnet buildgendanner projektets NuGet-pakker i kørslen. - Regler i
.editorconfig(og de analysatorer, projektet slår til, for eksempel medAnalysisLevelogEnforceCodeStyleInBuild) afgør, hvad et fund er.
Hvad der kontrolleres
| Filer | Værktøj | Hvad det melder |
|---|---|---|
| solutionen eller projektet | dotnet format --verify-no-changes |
formatering og stil, der afviger fra .editorconfig |
| det samme | dotnet build -warnaserror |
compiler- og analysatoradvarsler, som får bygningen til at fejle |
Usporede filer kontrolleres ikke. Et repository uden *.cs-filer består med en bemærkning. Projektets tests køres ikke.
Aflæsning af en kørsel
- Åbn statuskontrollen på pull requesten og derefter jobbet
quality-checks-csharp. - Hvert værktøj har sin egen logggruppe. Begge kører, selv om det første fejlede, så én kørsel viser alle fund.
- Et værktøj ender med
PASS <værktøj>ellerFAIL <værktøj>; sidste linje i en mislykket kørsel nævner dem:Quality checks failed: dotnet format --verify-no-changes. - Et fund skrives af værktøjet selv som
path(line,column): CODE message.
Typiske fejl og rettelser
| Værktøj | Hvad loggen viser | Rettelse |
|---|---|---|
dotnet format --verify-no-changes |
Program.cs(12,5): error WHITESPACE: Fix whitespace formatting |
Kør dotnet format <projekt>, og commit |
dotnet build -warnaserror |
CS8602: Dereference of a possibly null reference |
Ret koden (null-kontrol); undertryk ikke advarslen uden en begrundelse |
dotnet build -warnaserror |
IDE0005: Using directive is unnecessary |
Fjern direktivet |
For at gentage en kørsel på din egen maskine skal du bruge samme SDK:
dotnet --version # 10.0.401
dotnet format src/App.sln --verify-no-changes
dotnet build src/App.sln -warnaserror
Når workflowet selv fejler
| Meddelelse | Årsag | Rettelse |
|---|---|---|
[configuration] dotnet-sdk-version '<x>' is not an exact stable version 10 or later |
En kanal, et interval, en preview eller en version under 10 | Angiv en præcis version som 10.0.401 |
[configuration] working-directory must be a relative path inside the repository. |
En absolut sti eller .. |
Brug en sti inde i repositoryet |
[configuration] C# files exist but no solution or project was found |
Repositoryet har *.cs-filer og ingen *.sln, *.slnx eller *.csproj i arbejdsmappen |
Tilføj en, eller sæt working-directory |
[configuration] Several solutions or projects were found |
Mere end én kandidat | Sæt inputtet project |
| Installationstrinnet fejler | dot.net eller runnerens netværk kan ikke nås |
Kør jobbet igen; se troubleshooting.md |