Stylecop กับ FXcop


คำตอบ:


172

Stylecop เป็นเครื่องมือวิเคราะห์สไตล์ที่ทำงานในระดับซอร์สโค้ด โดยหลักแล้วมีไว้เพื่อจัดเตรียมรูปแบบทั่วไปเดียวที่โครงการที่มีการจัดการสามารถใช้เพื่อให้สอดคล้องกันภายในโลกที่ใหญ่ขึ้นของซอฟต์แวร์ที่มีการจัดการ การตัดสินใจเกี่ยวกับสไตล์เป็นหลักเพื่อหลีกเลี่ยงสงครามศักดิ์สิทธิ์ (ท้ายที่สุดแล้วสไตล์มักเป็นเรื่องส่วนตัวโดยเนื้อแท้) ฉันไม่คิดว่าฉันเคยพบใครบางคนที่ชอบทั้งหมดของกฎ StyleCop แต่ที่ตกลง หมายความว่า StyleCop เป็นการประนีประนอมที่ดีโดยทั่วไปท่ามกลางแนวทางสไตล์ที่มีอยู่มากมาย (หากกฎของ stylecop สามารถปรับแต่งได้อย่างมากนอกเหนือจากการเปิด / ปิดใช้งานเพียงอย่างเดียวก็จะทำให้วัตถุประสงค์ทั้งหมดของเครื่องมือนั้นล้มเหลว

ในทางกลับกัน FxCop เป็นเครื่องมือวิเคราะห์แบบคงที่ซึ่งทำงานในระดับของชุดประกอบที่มีการจัดการ สามารถกำหนดทิศทางผ่านแอตทริบิวต์เนื่องจากสามารถดูแอตทริบิวต์ขององค์ประกอบรหัสเช่น ตรวจพบปัญหาที่สามารถมองเห็นได้ในระดับ "ไบนารี" (เหมือนเดิม) เมื่อเทียบกับระดับวากยสัมพันธ์

เพื่อตอบคำถามของคุณ StyleCop ไม่ได้อยู่เหนือ FxCop และ FxCop ก็ไม่ได้บังคับใช้ stylecop เครื่องมือเหล่านี้เป็นเครื่องมือที่แตกต่างกันสองแบบโดยมีวัตถุประสงค์สองอย่างที่แตกต่างกันซึ่งทั้งสองสามารถให้ประโยชน์ที่แท้จริงสำหรับโค้ดของคุณ

(AKA ฉันวิ่งด้วยทั้งคู่ :))


ตัวอย่างสองสามข้อของสิ่งที่อาจตรวจพบเทียบกับสิ่งที่อีกฝ่ายอาจตรวจพบ:

การละเมิด StyleCop อาจรวมถึงคำเตือนที่เกี่ยวข้องกับ Whitespace, Formatting, Public method documentation ผ่าน xml-comments ลำดับของการกำหนดวิธีการภายในคลาส

การละเมิด FxCop อาจรวมถึงคำเตือนที่เกี่ยวข้องกับ: โลกาภิวัตน์การมีเพศสัมพันธ์ที่แน่นหนาความซับซ้อนของวัฏจักรการหักล้างค่าว่างที่อาจเกิดขึ้น


1
ใช่คำตอบก่อนหน้านี้เปรียบเทียบทั้งสองไม่ถูกต้องในการนับทั้งหมด StyleCop และ FxCop ทำงานสองอย่างที่แตกต่างกันมากและควรตรวจสอบค่าที่แต่ละอย่างมีให้ในโค้ดเบสของคุณและเหตุผลที่คุณควรเรียกใช้
Jedidja

3
ยอมรับว่ากฎ StyleCop ไม่ใช่ทั้งหมดที่ดี แต่อย่างที่คุณบอกว่ากฎที่คุณไม่ต้องการสามารถปิดใช้งานได้ เรากำลังใช้ StyleCop - หลังจากปิดใช้งานกฎโง่ ๆ ธรรมดามันให้คุณค่าที่ดีสำหรับเรา - ในราคาประหยัด .. ! แนะนำ. (สังเกตว่าเราเกลียดมันตั้งแต่แวบแรก .. )
stiank81

@ stiank81: ใช่ฉันคิดว่าทุกคนเกลียด StyleCop ในตอนแรก หลังจากเวลาผ่านไปเพียงเล็กน้อยผลประโยชน์ก็ก่อตัวขึ้นและพิสูจน์ตัวเองได้ว่าเป็นเครื่องมือที่มีประโยชน์มากในการรักษาความสม่ำเสมอของแหล่งที่มา :)
Greg D

1
คำตอบที่ดีในสิ่งที่ฉันกำลังมองหา :)
GibboK

16

stylecop ทำงานกับซอร์สโค้ด C # ของคุณ fxcop ดูโค้ดที่คอมไพล์ของคุณจากภาษา. net


ดังนั้นหากคุณใช้ Stylecop FXCop สามารถเพิ่มมูลค่าได้หรือไม่?
JL.

จริงๆแล้วคุณควรใช้ FxCop มากกว่า
Andrew Rollings

อย่างน้อยก็ในตอนนี้จนกว่าจะสามารถกำหนดค่าได้มากขึ้น :)
Andrew Rollings

1
ไม่น่าเป็นไปได้ที่ stylecop จะสามารถกำหนดค่าได้มากขึ้นอย่างมีนัยสำคัญ คุณลักษณะที่สำคัญกว่าสำหรับ stylecop คือการแก้ไขการละเมิดสไตล์โดยอัตโนมัติ
Greg D

เราใช้ Resharper เพื่อทำให้โค้ดเป็นไปตามกฎ stylecop โดยอัตโนมัติ เพียงอย่างเดียวทำให้คุ้มค่ากับราคาที่ซื้อ และคุณจะได้รับสิทธิประโยชน์อื่น ๆ ทั้งหมดที่อยู่เหนือสิ่งนั้น
ไม่คืนเงินไม่รับคืน

11

หรือทางเลือกที่สมบูรณ์ที่ดีที่จะFxCop / StyleCopจะใช้เครื่องมือเชิงพาณิชย์NDepend ด้วยเครื่องมือนี้สามารถเขียนกฎรหัสมากกว่า LINQ แบบสอบถาม (คือ CQLinq) คำเตือน: ฉันเป็นหนึ่งในผู้พัฒนาเครื่องมือนี้

มากกว่า200 กฎของรหัสมีการเสนอโดยค่าเริ่มต้นเหล่านี้รวมถึงการออกแบบ , สถาปัตยกรรม , คุณภาพรหัส , วิวัฒนาการรหัส , การตั้งชื่อ , รหัสตาย , การใช้งาน .NET Fx ...

CQLinq จะทุ่มเทกับกฎระเบียบของการเขียนรหัสที่สามารถตรวจสอบแล้วมีชีวิตอยู่ใน Visual Studioหรือที่สามารถรับการตรวจสอบในระหว่างการสร้างกระบวนการและการรายงานว่าในการรายงาน HTML / จาวาสคริปต์

จุดแข็งของ CQLinq เหนือ FxCop หรือ StyleCop คือเขียนกฎรหัสได้ตรงไปตรงมาและได้ผลลัพธ์ทันที มีการเสนอสิ่งอำนวยความสะดวกเพื่อเรียกดูองค์ประกอบรหัสที่ตรงกัน สิ่งนี้มีลักษณะดังนี้:

กฎรหัส CQLinq


6

FXCop ทำการวิเคราะห์รหัสคงที่ของชุดรหัสที่มีการจัดการของคุณ คิดว่าเป็นการค้นหาปัญหาที่จะทำให้เกิดปัญหาในขณะทำงานหรือจะส่งผลต่อวิธีที่นักพัฒนาเชื่อว่าโค้ดจะทำงาน (รหัสที่ไม่สามารถเข้าถึงได้)

StyleCop วิเคราะห์โครงสร้างของโค้ดของคุณจากมุมมองข้อความ คิดว่านี่เป็นปัญหาที่จะส่งผลต่อประสบการณ์การพัฒนาและการออกแบบของคุณ (การจัดรูปแบบหลักการตั้งชื่อเอกสารประกอบ)

ทั้งสองเป็นเครื่องมือที่มีค่ามากและคุณควรใช้ทั้งสองอย่าง แต่มุ่งเน้นไปที่ปัญหาที่แตกต่างกัน


5

StyleCop ทำการวิเคราะห์ซอร์สโค้ดซึ่งไม่สามารถกำหนดค่าได้มากนัก มันไม่ได้ทำสิ่งเดียวกับ FxCop ซึ่งวิเคราะห์โค้ดที่คอมไพล์แล้ว

บทความวิกิพีเดียเกี่ยวกับสิ่งเหล่านี้ให้บทสรุปที่ดีของความแตกต่าง:

http://en.wikipedia.org/wiki/StyleCop

http://en.wikipedia.org/wiki/FxCop

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.