ขึ้นอยู่กับว่า เป็นเครื่องมือแยกการพึ่งพาซอร์สโค้ดที่ออกแบบมาเพื่ออนุมานความสัมพันธ์ทางไวยากรณ์ระหว่างเอนทิตีซอร์สโค้ดเช่นไฟล์และวิธีการจากภาษาการเขียนโปรแกรมต่างๆ วัตถุประสงค์ของเราคือการจัดเตรียมกรอบการทำงานที่สามารถขยายได้อย่างง่ายดายเพื่อรองรับการแยกการพึ่งพาจากภาษาการเขียนโปรแกรมที่แตกต่างกันและไฟล์การกำหนดค่าเพื่อให้เครื่องมือวิเคราะห์ระดับสูงอื่น ๆ สามารถสร้างขึ้นได้ในรูปแบบที่ไม่ขึ้นกับภาษา แอปพลิเคชันตัวอย่างรวมถึงการสร้างภาพโค้ด, ความเข้าใจของโปรแกรม, การตรวจจับกลิ่นรหัส, การวิเคราะห์สถาปัตยกรรม, การออกแบบใหม่การออกแบบ ฯลฯ
การสร้างขึ้นของเรา นั้น ได้รับแรงบันดาลใจจากการสังเกตว่าผู้ขายที่แตกต่างกันเช่นเข้าใจ™โครงสร้าง 101 ™และ Lattix ™สร้างเครื่องมือแยกการพึ่งพาของตัวเองที่บรรจุด้วยฟังก์ชั่นการวิเคราะห์อื่น ๆ ของพวกเขา ในการดำเนินการวิเคราะห์ใหม่ผู้ขายและนักวิจัยแต่ละคนจะต้องสร้างเครื่องมือการสกัดการพึ่งพาของตนเองหรือใช้ผลลัพธ์ของเครื่องมืออื่น ๆ ซึ่งมักจะไม่ได้รับการออกแบบมาเพื่อนำมาใช้ซ้ำได้
เราเชื่อว่าการวิเคราะห์การพึ่งพาซอร์สโค้ดซอฟต์แวร์เป็นหนึ่งในรากฐานที่สำคัญที่สุดของวิศวกรรมซอฟต์แวร์ ด้วยจำนวนระบบที่เพิ่มขึ้นที่สร้างขึ้นบนภาษาใหม่และหลายภาษาความต้องการของกรอบการสกัดการพึ่งพาหลายภาษาที่ยืดหยุ่นและยืดหยุ่นได้
ขึ้นอยู่ กับโอเพ่นซอร์สและฟรีเพื่อส่งเสริมการทำงานร่วมกันของชุมชนเพื่อหลีกเลี่ยงการทำงานซ้ำ ๆ และเพื่อปรับปรุงคุณภาพของเครื่องมือวิเคราะห์
คุณสามารถดาวน์โหลดเวอร์ชันล่าสุด ขึ้น อยู่กับ https://github.com/multilang-depends/depends/releases/,,
จากนั้นคลายซิปไฟล์ depends-*version*.tgz
ในไดเรกทอรีคอมพิวเตอร์ของคุณ
ขึ้นอยู่กับ การเขียนใน Java ดังนั้นจึงสามารถทำงานบนระบบปฏิบัติการใด ๆ ที่มีสภาพแวดล้อม JRE หรือ JDK (เช่น Windows, Linux หรือ Mac OS)
ตามหลักการความรับผิดชอบเดี่ยว ขึ้นอยู่ กับการออกแบบเพื่อวัตถุประสงค์ในการแยกการพึ่งพาเท่านั้น มันให้เฉพาะอินเทอร์เฟซ CLI โดยไม่มี GUI แต่คุณสามารถแปลงเอาต์พุตของ ขึ้น อยู่กับ GUI ของเครื่องมืออื่น ๆ เช่น graphviz (http://graphviz.org/), Plantuml (http://plantuml.com/) และ dv8 (https: // www archdia.com)
คุณสามารถเรียก ใช้ได้ขึ้นอยู่ กับวิธีต่อไปนี้: depends.sh
กับ Linux/Mac depends.bat
บน Microsoft Windows หรือ java -jar depends.jar
หมายเหตุ: หากคุณพบข้อผิดพลาดของหน่วยความจำเช่น GC overhead limt exceed
โปรดขยายหน่วยความจำ JVM เช่นการติดตาม java -Xmx4g -jar depends.jar <args>
การใช้เครื่องมือ CLI สามารถระบุได้โดย depends --help
เช่นติดตาม:
Usage: depends [-hms] [--auto-include] [-d=<dir>] [-g=<granularity>]
[-p=<namePathPattern>] [-f=<format>[,<format>...]]...
[-i=<includes>[,<includes>...]]... <lang> <src> <output>
<lang> The language of project files: [cpp, java, ruby, python,
pom]
<src> The directory to be analyzed
<output> The output file name
--auto-include auto include all paths under the source path (please
notice the potential side effect)
-i, --includes=<includes>[,<includes>...]
The files of searching path
-d, --dir=<dir> The output directory
-f, --format=<format>[,<format>...]
The output format: [json(default),xml,excel,dot,
plantuml]
-g, --granularity=<granularity>
Granularity of dependency.[file(default),method,L#(the level of folder. e.g. L1=1st level folder) ]
-h, --help Display this help and exit
-s, --strip-leading-path Strip the leading path.
-m, --n-map-files Output DV8 dependency map file.
-p, --namepattern=<namePathPattern>
The name path separators.[default(/),dot(.)
ในการทำงาน ขึ้นอยู่กับ คุณต้องระบุพารามิเตอร์ที่สำคัญที่สุด 3 พารามิเตอร์: lang
, src
, output
ตามที่อธิบายไว้ข้างต้น
โปรดทราบว่าสำหรับภาษาการเขียนโปรแกรมส่วนใหญ่เช่น C/C++, Ruby, Maven/Gradle
, เส้นทาง --includes
รวมเป็นสิ่งสำคัญสำหรับ การ ค้นหาไฟล์ที่ถูกต้องเมื่อทำการวิเคราะห์การพึ่งพารหัสคล้ายกับ MakeFile/IDE มิฉะนั้นการพึ่งพาที่สกัดอาจไม่ถูกต้อง
อย่าระบุรวมถึงเส้นทางนอกไดเรกทอรี SRC (เช่นระดับระบบรวมถึงเส้นทางหรือการพึ่งพาภายนอก) เนื่องจาก ขึ้นอยู่ กับการประมวลผล
--auto-include
เป็นพารามิเตอร์ที่มีประโยชน์ในการทำให้อินพุตของ DIR รวมง่ายขึ้น: ด้วยพารามิเตอร์นี้ ขึ้นอยู่กับ การรวมไดเรกทอรีย่อยทั้งหมดของ src
สำหรับโปรแกรม Java
คุณไม่จำเป็นต้องระบุเส้นทางเนื่องจากการแมประหว่างเส้นทางไฟล์ Java นั้นมีการระบุไว้อย่างชัดเจนในคำสั่งนำเข้า
เอาต์พุตของ ขึ้นอยู่กับ สามารถส่งออกเป็น 5 รูปแบบ: JSON, XML, Excel, DOT และ Plantuml เนื่องจากข้อ จำกัด ของ MS Excel คุณสามารถส่งออกไปยังไฟล์ Excel ได้หากจำนวนองค์ประกอบน้อยกว่า 256)
ไฟล์ DOT สามารถใช้เพื่อสร้างกราฟโดยใช้ graphviz (http://graphviz.org/)
ไฟล์ Plantuml สามารถใช้ในการสร้างแผนภาพ UML โดยใช้ PlantumL (http://plantuml.com/)
ไฟล์ JSON และ XML สามารถใช้ในการสร้างเมทริกซ์โครงสร้างการออกแบบ (DSMS) โดยใช้ DV8 (https://www.archdia.net)
รายละเอียดของรูปแบบ JSON/XML สามารถดูได้ที่นี่
ขึ้นอยู่กับ การสนับสนุนประเภทการพึ่งพาที่สำคัญรวมถึง:
import
Java, C/C ++ #include
, Ruby require
สำหรับรายละเอียดของประเภทที่รองรับโปรดดูที่นี่
มีหลายวิธีที่จะมีส่วนร่วมใน การขึ้นอยู่ กับ ตัวอย่างเช่น:
ขึ้นอยู่ กับการใช้เคอร์เนลที่สง่างามสำหรับการวิเคราะห์การพึ่งพาซึ่งสามารถขยายได้เพื่อรองรับภาษาการเขียนโปรแกรมต่างๆ จนถึงตอนนี้มันรองรับ Java, C/C ++, Ruby และ Maven เท่านั้น โปรดอย่าลังเลที่จะใช้ประโยชน์จากเฟรมเวิร์กนี้เพื่อเพิ่มตัวแยกการพึ่งพาของคุณเอง
ความพยายามที่จำเป็นสำหรับแต่ละภาษานั้นแตกต่างกันมาก เราใช้เวลา 24 ชั่วโมงในการสนับสนุน Maven แต่ใช้เวลาหลายสัปดาห์ในการแยกการพึ่งพาจากทับทิม
การแยกวิเคราะห์ไฟล์ต้นฉบับไม่สำคัญ มีคุณสมบัติเฉพาะภาษามากมายที่ต้องนำมาพิจารณา การรายงานคุณสมบัติภาษาที่ไม่ได้รับการสนับสนุนหรือแก้ไขปัญหาที่มีอยู่จะ ขึ้นอยู่กับ ดีขึ้น
คุณสามารถใช้ ขึ้นอยู่ กับการสร้างบล็อกเพื่อสร้างเครื่องมือต่าง ๆ ไม่ว่าจะเป็นโอเพ่นซอร์สหรือเชิงพาณิชย์สำหรับการผลิตหรือการวิจัยเช่นเครื่องมือ GUI เครื่องมือสร้างภาพรหัส ฯลฯ
มันจะช่วยเราได้อย่างมากหาก บริษัท หรือสถาบันของคุณกลายเป็นผู้สนับสนุนโครงการของเรา การบริจาคของคุณสามารถช่วยได้ ขึ้นอยู่ กับความเป็นอิสระยั่งยืนและสนับสนุนผู้มีส่วนร่วมมากขึ้น
คุณสามารถใช้ "ขึ้นอยู่กับ" ในโครงการของคุณไม่ว่าจะเป็นโอเพ่นซอร์สหรือโครงการเชิงพาณิชย์รวมถึงการวิจัยวิศวกรรมซอฟต์แวร์ ความคิดเห็นของคุณได้รับการชื่นชมอย่างมาก เราจะขอบคุณถ้าคุณสามารถช่วยเรากระจายคำและกระตุ้นให้ผู้คนใช้มากขึ้น
โครงการนี้สร้างขึ้นจากการทำงานที่ยอดเยี่ยมของนักวิจัยคนอื่น ๆ รวมถึงกรอบการทำงาน (https://github.com/jinwuxia/enre) ที่เสนอโดย Jin Wuxia et al. และการวิจัยสถาปัตยกรรมจากทีม Prof. Yuanfang Cai ( https://www.cs.drexel.edu/~yfcai/) ในการวิเคราะห์การพึ่งพา
ส่วนหน้าเฉพาะด้านของภาษา ขึ้น อยู่กับโครงการโอเพ่นซอร์สที่ยอดเยี่ยมหลายโครงการรวมถึง Antlr/Antlr Grammar V4 (https://github.com/antlr), Eclipse CDT (www.eclipse.org/cdt) และ Jruby ( https://github.com/jruby/jruby)