Stylecop vs FXcop

Jawaban:

171

Stylecop adalah alat analisis gaya yang bekerja di tingkat kode sumber. Itu ada terutama untuk menyediakan satu gaya umum yang dapat digunakan oleh proyek yang dikelola untuk tetap konsisten dalam dunia perangkat lunak terkelola yang lebih besar. Itu membuat keputusan tentang gaya terutama untuk menghindari perang suci (bagaimanapun juga, gaya hampir selalu merupakan hal yang secara inheren subjektif). Saya rasa saya belum pernah bertemu seseorang yang menyukai semua aturan StyleCop, tapi tidak apa- apa . Ini berarti bahwa StyleCop adalah kompromi yang baik secara umum di antara sekumpulan pedoman gaya yang ada. (Jika aturan stylecop sangat dapat disesuaikan, lebih dari sekadar mengaktifkan / menonaktifkannya, itu akan mengalahkan seluruh tujuan alat.)

FxCop, di sisi lain, adalah alat analisis statis yang bekerja pada tingkat perakitan terkelola. Ia dapat diberikan arahan melalui atribut karena ia dapat melihat atribut pada elemen kode, misalnya. Ini mendeteksi masalah yang dapat dilihat pada tingkat "biner" (seolah-olah) sebagai lawan dari tingkat sintaksis.

Untuk menjawab pertanyaan Anda, StyleCop tidak menggantikan FxCop, dan FxCop tidak menggantikan stylecop. Mereka adalah dua alat berbeda dengan dua tujuan berbeda yang keduanya dapat memberikan manfaat nyata untuk kode Anda.

(AKA, saya menjalankan keduanya. :))


Beberapa contoh hal-hal yang mungkin dideteksi vs. hal-hal yang mungkin dideteksi oleh orang lain:

Pelanggaran StyleCop mungkin termasuk peringatan yang terkait dengan: Whitespace, Pemformatan, Dokumentasi metode publik melalui xml-comments, urutan definisi metode dalam kelas.

Pelanggaran FxCop mungkin termasuk peringatan yang terkait dengan: Globalisasi, kopling ketat, kompleksitas siklomatik, potensi dereferensi nol.

Greg D
sumber
1
Ya, jawaban sebelumnya yang membandingkan keduanya salah dalam semua hal. StyleCop dan FxCop melakukan dua tugas yang sangat berbeda, dan ada baiknya menyelidiki nilai yang diberikan masing-masing pada basis kode Anda dan mengapa Anda harus menjalankannya.
Jedidja
3
Setuju bahwa tidak semua aturan StyleCop bagus, tetapi seperti yang Anda katakan, aturan yang tidak Anda inginkan dapat dinonaktifkan. Kami menggunakan StyleCop - setelah menonaktifkan aturan biasa yang bodoh itu memberikan nilai yang baik bagi kami - dengan biaya rendah ..! Direkomendasikan. (perhatikan bahwa kami membencinya pada pandangan pertama ..)
stiank81
@ stiank81: Ya, saya pikir semua orang membenci StyleCop pada awalnya. Namun, setelah beberapa waktu, manfaat benar-benar terbentuk dan terbukti menjadi alat yang sangat berguna untuk menjaga konsistensi dalam sumber. :)
Greg D
1
jawaban bagus apa yang saya cari :)
GibboK
16

stylecop bekerja pada kode sumber C # Anda. fxcop melihat kode yang Anda kompilasi dari bahasa .net apa pun.

Tidak Ada Pengembalian Dana Tidak Ada Pengembalian
sumber
Jadi jika Anda menggunakan Stylecop, dapatkah FXCop menambah nilai?
JL.
Sungguh, lebih baik Anda menggunakan FxCop.
Andrew Rollings
Setidaknya untuk saat ini, hingga lebih dapat dikonfigurasi. :)
Andrew Rollings
1
Stylecop tidak mungkin menjadi lebih dapat dikonfigurasi secara signifikan. Fitur yang jauh lebih penting untuk stylecop adalah koreksi otomatis pelanggaran gaya.
Greg D
kami menggunakan Resharper untuk secara otomatis membuat kode yang sesuai dengan aturan stylecop. Itu saja membuatnya sepadan dengan harga pembelian. Dan Anda mendapatkan semua manfaat lain selain itu.
Tidak Ada Pengembalian Dana Tidak Ada Pengembalian
11

Alternatif atau pelengkap yang baik untuk FxCop / StyleCop adalah dengan menggunakan alat komersial NDepend . Dengan alat ini seseorang dapat menulis Aturan Kode melalui LINQ Queries (yaitu CQLinq) . Penafian: Saya adalah salah satu pengembang alat ini

Lebih dari 200 aturan kode diusulkan secara default, ini termasuk desain , arsitektur , kualitas kode , evolusi kode , konvensi penamaan , kode mati , penggunaan NET Fx ...

CQLinq didedikasikan untuk menulis aturan kode yang dapat diverifikasi langsung di Visual Studio , atau yang dapat diverifikasi selama proses pembuatan dan dilaporkan dalam laporan HTML / javascript .

Kekuatan CQLinq di atas FxCop atau StyleCop, adalah mudah untuk menulis aturan kode , dan langsung mendapatkan hasil. Fasilitas diusulkan untuk menelusuri elemen kode yang cocok. Secara konkret terlihat seperti itu:

Aturan kode CQLinq

Patrick dari tim NDepend
sumber
6

FXCop melakukan analisis kode statis dari kumpulan kode yang Anda kelola. Anggap saja sebagai menemukan masalah yang akan menyebabkan masalah pada waktu proses atau yang akan memengaruhi cara pengembang meyakini kode akan berjalan (kode tidak dapat dijangkau).

StyleCop menganalisis struktur kode Anda dari sudut pandang teks. Anggap ini sebagai masalah yang akan memengaruhi pengalaman pengembangan dan desain Anda (Pemformatan, konvensi penamaan, dokumentasi)

Keduanya adalah alat yang SANGAT berharga dan Anda harus menggunakan keduanya tetapi keduanya fokus pada masalah yang berbeda.

AllenSanborn
sumber