Sista tekniska lektionen: studenterna bygger ett komplett review-system och lär sig var gränsen går för vad AI kan och inte kan granska.
// Denna klass har fyra avsiktliga brott — låt klassen identifiera dem före AI:n
public class OrderService
{
private readonly string _connectionString = "Server=.;Database=Orders;"; // brott 1
public Order CreateOrder(string customerId, List<string> productIds) // brott 2 (primitiver)
{
if (productIds.Count == 0)
throw new ArgumentException("No products"); // brott 3 (bör vara Result.Failure)
// använder DbContext direkt i domäntjänst — brott 4 (infrastruktur i domän)
using var ctx = new OrderDbContext(_connectionString);
var order = new Order { CustomerId = customerId };
ctx.Orders.Add(order);
ctx.SaveChanges();
return order; // returnerar null om SaveChanges kastar — brott 5
}
}
ArgumentNullException i en konstruktor (korrekt användning för guard clauses). AI kan flagga det som "bör vara Result.Failure" — det är ett false positive. Diskutera: hur avgör man?
.prompt.md-filer: arch-review.prompt.md, security-review.prompt.md, testability-review.prompt.md| Fråga | Svar |
|---|---|
| "Hur hanterar jag false positives när AI rapporterar dem?" | Dokumentera dem i din review och förklara varför de är false positives. Det tränar din förmåga att skilja på AI:s mekaniska tolkningar och verkliga brott. Om du ser många false positives i en kategori, justera prompten för att minska dem. |
| "Ska AI-review ersätta manuell review?" | Nej — AI-review är ett pre-review-steg som eliminerar de mekaniska kommentarerna. Manuell granskning fokuserar på affärslogik, integration och det som kräver domänkunskap. |
| "Kan jag automatisera review i CI/CD?" | Ja — Copilot Code Review kan integreras i GitHub Actions för PR-granskning. Det är ett VG-fördjupningsmoment i examinationen. Kräver att organisationens Copilot-policy tillåter det. |