มีเครื่องมือการวิเคราะห์สแตติกใดบ้างสำหรับ C # [ปิด]


174

มีเครื่องมืออะไรบ้างสำหรับการวิเคราะห์แบบคงที่เทียบกับรหัส C # ฉันรู้เกี่ยวกับ FxCop และ StyleCop มีคนอื่นไหม? ฉันเคยวิ่งข้าม NStatic มาก่อน แต่มันก็มีการพัฒนาในสิ่งที่ดูเหมือนตลอดไป - มันดูลื่นไหลจากสิ่งที่ฉันเห็นมันเล็ก ๆ น้อย ๆ ดังนั้นมันจะดีถ้ามันจะได้เห็นแสงของวัน

ในบรรทัดเดียวกันนี้ (นี่คือความสนใจของฉันเป็นหลักสำหรับการวิเคราะห์แบบคงที่) เครื่องมือสำหรับการทดสอบรหัสสำหรับปัญหาแบบมัลติเธรด (การหยุดชะงักสภาพการแข่งขัน ฯลฯ ) ก็ดูค่อนข้างหายาก Typemock Racer เพิ่งโผล่ขึ้นมาดังนั้นฉันจะดูมัน นอกเหนือจากนี้แล้ว

ความคิดเห็นในชีวิตจริงเกี่ยวกับเครื่องมือที่คุณใช้นั้นได้รับการชื่นชม


@IraBaxter ฉันได้เริ่มการสนทนาเกี่ยวกับคำถามนี้ใน Metaแล้วและฉันขอเชิญคุณให้พูดถึงข้อโต้แย้งของคุณว่าทำไมไม่ควรลบคำถามนี้หากคุณต้องการ

คำตอบ:


341

เครื่องมือตรวจจับการละเมิดรหัส:

  • Fxcopเครื่องมือที่ยอดเยี่ยมจาก Microsoft ตรวจสอบความสอดคล้องกับแนวทาง. net framework

    แก้ไขตุลาคม 2010:ไม่สามารถดาวน์โหลดแบบสแตนด์อโลนได้อีกต่อไป ตอนนี้จะรวมอยู่ในWindows SDKและหลังจากการติดตั้งสามารถพบได้ใน Program Files \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe

    แก้ไขกุมภาพันธ์ 2018 : ฟังก์ชั่นนี้ได้รับการรวมเข้ากับ Visual Studio 2012 และต่อมาเป็นการวิเคราะห์รหัส

  • Clocksharpตามการวิเคราะห์ซอร์สโค้ด (เป็น C # 2.0)

  • Mono.Gendarmeคล้ายกับ Fxcop แต่มีใบอนุญาต opensource (อิงจากMono.Cecil )

  • สโมคกี้คล้ายกับ Fxcop และ Gendarme บนพื้นฐานMono.Cecil ไม่ได้พัฒนาอีกต่อไปผู้พัฒนาหลักจะทำงานร่วมกับทีม Gendarme ในตอนนี้

  • Coverity Prevent ™สำหรับ C # , ผลิตภัณฑ์เชิงพาณิชย์

  • PRQA QA · C # , ผลิตภัณฑ์เชิงพาณิชย์

  • PVS-Studioผลิตภัณฑ์เชิงพาณิชย์

  • CAT.NET , Visual Studio addin ที่ช่วยระบุข้อบกพร่องด้านความปลอดภัยแก้ไขพฤศจิกายน 2019: การเชื่อมโยงจะตาย

  • CodeIt.Right

  • spec #

  • Pex

  • SonarQube , FOSS และตัวเลือกการค้าเพื่อสนับสนุนการเขียนโค้ดที่สะอาดและปลอดภัยยิ่งขึ้น

เครื่องมือวัดคุณภาพ:

  • ขึ้นอยู่กับเครื่องมือแสดงผลที่ยอดเยี่ยม มีประโยชน์สำหรับการวัดรหัสกฎต่างการเชื่อมต่อและการศึกษาการพึ่งพา
  • Nitriqฟรีสามารถเขียนเมทริก / ข้อ จำกัด ของคุณเองสร้างภาพข้อมูลที่ดีได้อย่างง่ายดาย แก้ไขกุมภาพันธ์ 2018:ลิงค์ดาวน์โหลดตายแล้ว แก้ไข 17 มิถุนายน 2019: ลิงค์ไม่ตาย
  • RSM Squaredขึ้นอยู่กับการวิเคราะห์ซอร์สโค้ด
  • C # Metricsใช้การแยกวิเคราะห์เต็มรูปแบบของ C #
  • SourceMonitorเครื่องมือเก่าที่ได้รับการปรับปรุงเป็นครั้งคราว
  • Code Metrics , Add-in Reflector
  • Vilเครื่องมือเก่าที่ไม่รองรับ. NET 2.0 แก้ไขมกราคม 2018:เชื่อมโยงตอนนี้ตาย

การตรวจสอบเครื่องมือสไตล์:

  • เครื่องมือStyleCop , Microsoft (เรียกใช้จากภายใน Visual Studio หรือรวมเข้ากับโครงการ MSBuild) มีให้เป็นส่วนขยายสำหรับ Visual Studio 2015 และ C # 6.0
  • Agent Smithปลั๊กอินการตรวจสอบความถูกต้องของสไตล์โค้ดสำหรับReSharper

การตรวจจับการทำซ้ำ:

  • Simianตามรหัสแหล่งที่มา ทำงานได้กับภาษามากมาย
  • CloneDRตรวจจับโคลนที่มีพารามิเตอร์เฉพาะขอบเขตของภาษา (จัดการกับหลายภาษานอกเหนือจาก C #)
  • Clone Detectiveเป็นปลั๊กอิน Visual Studio (ใช้ConQATภายใน)
  • Atomiqตามซอร์สโค้ดภาษามากมายการแสดงภาพแบบ "วงล้อ" ที่ยอดเยี่ยม

เครื่องมือการรีแฟคเตอร์ทั่วไป

  • ReSharper - การวิเคราะห์โค้ด C # ที่ยอดเยี่ยมส่วนใหญ่

4
ดูหน้า MSDN เกี่ยวกับ FxCop: msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "FxCop เป็นแอปพลิเคชันที่วิเคราะห์แอสเซมบลีของรหัสที่ได้รับการจัดการ (รหัสที่กำหนดเป้าหมายรันไทม์ภาษาทั่วไป. NET Framework) และรายงานข้อมูลเกี่ยวกับแอสเซมบลีเช่นการออกแบบที่เป็นไปได้การแปลการปรับปรุงประสิทธิภาพและความปลอดภัย "
ซาร่าห์เรือ

ลิงก์ FxCop ถูกลบออกจากเว็บไซต์ Microsoft นี่คือ FxCop 10.0 "download": microsoft.com/downloads/…
ulrichb

Simian นี้หรือไม่: harukizaemon.com/simian/index.html (คุณมีลิงค์เสีย) ดูเหมือนว่าจะเป็น. NET 1.1 เท่านั้น
ธีระโรจน์

@Theraot ขอบคุณฉันเปลี่ยน URL เกี่ยวกับเวอร์ชั่น. NET, Simian สามารถเรียกใช้บน. NET 1.1 บน Java 5 แต่นั่นไม่ได้หมายความว่าตรวจจับการทำซ้ำใน. NET รุ่นอื่น ๆ
Julien Hoarau

Nitriq ดูเหมือนจะไม่สามารถใช้ได้อีกต่อไป ลิงก์ดาวน์โหลด (ตอนนี้เปลี่ยนเส้นทางไปยัง NimblePros ส่วนหนึ่งของ Telerik) กล่าวว่า "ขออภัยเราไม่ให้บริการ Nitriq อีกต่อไป"
Narayana

7

เครื่องมือNDependอ้างถึงเป็นเครื่องมือวัดคุณภาพแต่มันก็เป็นเครื่องมือตรวจจับการละเมิดรหัสด้วยเช่นกัน คำเตือน: ฉันเป็นหนึ่งในนักพัฒนาของเครื่องมือ

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

กฎรหัส CQLinq

นอกจากนั้น NDepend ยังมาพร้อมกับการวิเคราะห์แบบคงที่เช่นคุณสมบัติ เหล่านี้รวมถึง:


ฉันมีโอกาสทดลองใช้ ND ND ในช่วงสองสามสัปดาห์ที่ผ่านมา - แฟนตัวยงจะได้รับใบอนุญาต dev เมื่อฉันสามารถ :) ขอบคุณสำหรับการทำงานของคุณ!
Michael Armes

1
  • Gendarmeเป็นเครื่องมือวิเคราะห์สถิตแบบโอเพ่นซอร์ส (คล้ายกับ FXCop แต่พบปัญหาต่าง ๆ มากมาย)
  • นักสืบ Cloneเป็นปลั๊กอินที่ดีสำหรับ Visual Studio ที่ค้นหารหัสที่ซ้ำกัน
  • นอกจากนี้เมื่อพูดถึง Mono ฉันพบว่าการคอมไพล์ด้วยคอมไพเลอร์ Mono (หากโค้ดของคุณเป็นแพลตฟอร์มที่เป็นอิสระเพียงพอที่จะทำเป้าหมายที่คุณอาจต้องการต่อสู้เพื่อต่อไป) พบตัวแปรที่ไม่ได้อ้างถึงและคำเตือนอื่น ๆ (แม้จะตั้งระดับการเตือนไว้ที่ 4)

1

คุณเห็นCAT.NETหรือยัง

จากประกาศแจ้ง -

CAT.NET เป็นเครื่องมือวิเคราะห์รหัสไบนารีที่ช่วยระบุตัวแปรทั่วไปของช่องโหว่ที่มีอยู่ทั่วไปที่สามารถก่อให้เกิดเวกเตอร์การโจมตีทั่วไปเช่น Cross-Site Scripting (XSS), SQL Injection และ XPath Injection

ฉันใช้เบต้ารุ่นแรกและดูเหมือนจะทำให้บางสิ่งดูน่าสนใจขึ้น


0

นอกเหนือจากรายการที่ยอดเยี่ยมโดย madgnome ฉันจะเพิ่มเครื่องตรวจจับรหัสที่ซ้ำกันซึ่งยึดตามบรรทัดคำสั่ง (แต่ฟรี):

http://sourceforge.net/projects/duplo/




-1

Optimyth ซอฟแวร์ได้เปิดตัวเพียงบริการวิเคราะห์แบบคงที่ในเมฆwww.checkinginthecloud.com เพียงอัปโหลดรหัสของคุณอย่างปลอดภัยเพื่อทำการวิเคราะห์และรับผลลัพธ์ ไม่ยุ่งยาก

รองรับหลายภาษารวมถึงข้อมูลเพิ่มเติม C # สามารถดูได้ที่wwww.optimyth.com


-1

Axivion Bauhaus Suiteเป็นเครื่องมือวิเคราะห์แบบสแตติกที่ทำงานร่วมกับ C # (เช่นเดียวกับ C, C ++ และ Java)

มันมีความสามารถดังต่อไปนี้:

  • การแสดงภาพสถาปัตยกรรมซอฟต์แวร์ (รวมถึงการพึ่งพา)
  • การบังคับใช้กฎของสถาปัตยกรรมเช่นเลเยอร์ระบบย่อยกฎการเรียก
  • การตรวจจับโคลน - เน้นการคัดลอกและวาง (และแก้ไขโค้ด)
  • การตรวจจับ Dead Code
  • การตรวจสอบวงจร
  • ตัวชี้วัดซอฟต์แวร์
  • ตรวจสอบสไตล์ของรหัส

คุณลักษณะเหล่านี้สามารถเรียกใช้แบบครั้งเดียวหรือเป็นส่วนหนึ่งของกระบวนการบูรณาการอย่างต่อเนื่อง ปัญหาสามารถถูกเน้นเป็นรายโครงการหรือต่อผู้พัฒนาเมื่อระบบถูกรวมเข้ากับระบบควบคุมซอร์สโค้ด

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