FxCop: Hoe om te gaan met gevonden regels?

Pagina: 1
Acties:

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 19:52

Haan

dotnetter

Topicstarter
Aangezien ik slechts 1 topic over FxCop kon vinden van bijna vier jaar oud, open ik maar een nieuw draadje.

Ik ben laatst ook eens gaan kijken wat FxCop allemaal weet te vinden in code die ik op mijn pc heb staan. (waarvan het meeste niet door mij geschreven :p )
Het gaat in alle gevallen om maatwerk bij een CRM applicatie, geen code die publiekelijk verspreid wordt.
Maar ik weet niet zo goed wat ik met alle gevonden regels moet en hoe 'belangrijk' ze zijn

Ik zal even een paar voorbeelden die ik het meest tegenkom posten:

Mark assemblies with CLSCompliantAttribute
als ik het goed begrijp, geef je hiermee aan dat je assembly zich houdt aan de CLS, (en dwing je af dat je dat ook zo implementeert) belangrijk als je een dll aan derden beschikbaar wilt stellen, maar verder eigenlijk niet?

Mark assemblies with COMVisibleAttribute
Ik ben er nog niet helemaal uit wat ik hiermee moet

Specify IFormatProvider
deze komt erg vaak terug, bij alle string.Format, textboxen etc. Ik begrijp de redenatie hierachter, maar wie houdt zich hier in de praktijk aan?

Mark members as static
Deze vond ik wel interessant, volgens de redenering van FxCop kan je het beste een method static maken als deze geen instance variabelen gebruikt, zodat de compiler 'non-virtual call sites to these members' weglaat (?)

Do not catch general exception types
Dat schijnt ook niet goed te zijn :P Maar het is vaak wel lastig om te bepalen welke specifieke exceptions kunnen optreden.

Ik ben benieuwd naar jullie meningen!

Kater? Eerst water, de rest komt later


  • bimm
  • Registratie: November 2005
  • Laatst online: 13-01 20:15
I zou ze bij langena niet allemaal weten echter deze twee wel!
[b][message=30182335,noline]Haan schreef op woensdag 04 juni 2008 @ • Specify IFormatProvider
deze komt erg vaak terug, bij alle string.Format, textboxen etc. Ik begrijp de redenatie hierachter, maar wie houdt zich hier in de praktijk aan?
Ik houd mij hier -absoluut- aan. Het is zo irritant als je getallen aan het converteren bent van string naar interne variable en hij verwacht de ene keer een , en de andere keer een . Ik geef dit altijd aan bij datums en conversies. Dit hoef je alleen niet als je op 1 computer werkt en je instellingen nooit veranderd.
[b][message=30182335,noline]Haan schreef op woensdag 04 juni 2008 @ • Do not catch general exception types
Dat schijnt ook niet goed te zijn :P Maar het is vaak wel lastig om te bepalen welke specifieke exceptions kunnen optreden.
De bedoeling is ook om de exceptions op de vangen die je wel verwacht (en dus ook netjes kunt opvangen). De andere propageer je gewoon omhoog in je programma in de hoop dat je daar er wel mee overweg kan. Op een of andere manier. Je kunt er altijd een aantal simuleren.

Ik ook, jij niet?


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:26
Wat ik zowiezo doe, is specifieren dat hij mij niets moet vertellen over gegenereerde code.
Verder heb ik momenteel op mijn project ook een aantal regels 'uit' staan; daaronder oa
CA1008 (checken of enums ook een 0 value hebben)
CA1021 (out parameters; ik maak er zowiezo zo weinig mogelijk gebruik van, maar als ik het doe, dan heb ik er meestal een goede reden voor)

Daarnaast heb ik ook een aantal 'globalization regels' uitgeschakeld, oa die waar er over die IFormatProvider geklaagt wordt.

Die mark members as static vind ik ook maar onzin in de meeste gevallen.

FxCop gebruik ik vooral om:
- na te gaan of ik geen virtual methods in een constructor call
- na te gaan of ik geen ongebruikte variablen heb
- na te gaan of ik geen private / internal methods heb die nergens gecalled worden
- en nog een paar andere regels.

https://fgheysels.github.io/


  • Haan
  • Registratie: Februari 2004
  • Laatst online: 19:52

Haan

dotnetter

Topicstarter
Wat ook wel mooi is, dat er 8000+ meldingen komen over een webservice van Microsoft zelf :+

Kater? Eerst water, de rest komt later


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:26
Vandaar dat ik zeg: de ignoregeneratedcode parameter definiëren ...

https://fgheysels.github.io/


  • Haan
  • Registratie: Februari 2004
  • Laatst online: 19:52

Haan

dotnetter

Topicstarter
Maar ik begrijp dus dat er niet zoveel mensen zijn die deze tool gebruiken? Zijn er (gratis) alternatieven die beter zijn?

Kater? Eerst water, de rest komt later


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Haan schreef op woensdag 11 juni 2008 @ 10:54:
Maar ik begrijp dus dat er niet zoveel mensen zijn die deze tool gebruiken? Zijn er (gratis) alternatieven die beter zijn?
FxCop zit in VS2008 volgens mij gewoon 'ingebakken'. Nu heb ik nooit veel gedaan met FxCop (enkele keer gezien) dus ik weet niet of 'alles' overgenomen is, maar wat ik er van begreep is dat het geïntegreerd is?

[edit1]
Ah:
Microsoft Visual Studio 2005 and Visual Studio 2008 both include a "Code Analysis" feature based on FxCop.
"Based on"...weet ik dus nog steeds niet of 't dan even 'compleet' is :+

[edit2]
En na even verder klikken een lijstje met alternatieven :Y)

[ Voor 34% gewijzigd door RobIII op 11-06-2008 11:05 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 31-10 11:58
Hier op mijn werk wordt er zeer actief gebruik van gemaakt en is het zelfs onderdeel van de autobuild (nightly). De "mark as static" wordt wel vaak genegeerd. Met de globalization kan je wel een hoop problemen voorkomen als het gaat om importeren/exporteren e.d.

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack

Pagina: 1