# java.plantuml-parser **Repository Path**: zinface/java.plantuml-parser ## Basic Information - **Project Name**: java.plantuml-parser - **Description**: 将 Java 源代码转换成Plantuml - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://github.com/shuzijun/plantuml-parser - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-09 - **Last Updated**: 2023-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # plantuml-parser ![Gradle Package](https://github.com/shuzijun/plantuml-parser/workflows/Gradle%20Package/badge.svg) ![plugin](https://github.com/shuzijun/plantuml-parser/workflows/plugin/badge.svg) 将Java源代码转换为plantuml Convert the Java source code to Plantuml > 1. 项目介绍来源: [知乎 - 基于JAVA源代码生成PlantUML类图](https://zhuanlan.zhihu.com/p/335045325) > 2. 项目Idea插件: [Jetbrians Plugin Marketplace - PlantUML Parser](https://plugins.jetbrains.com/plugin/15524-plantuml-parser) > 3. 项目源仓库: https://github.com/shuzijun/plantuml-parser/ ## plantuml-parser-cli ```bash # 构建 plantuml-parser-cli # build 任务构建无法执行 jar,它没有打包依赖,所以使用 fatjar ./gradlew :plantuml-parser-cli:build ./gradlew :plantuml-parser-cli:fatjar # usage java -jar plantuml-parser-cli/build/libs/plantuml-parser-cli-0.0.1.jar # run/test java -jar plantuml-parser-cli/build/libs/plantuml-parser-cli-0.0.1.jar \ -f plantuml-parser-cli/src/main/java/com/shuzijun/plantumlparser/cli/ # 追加一些参数可以得到更完整的信息: # -sctr -spkg -fpub -mpub -fpro -mpro ``` Usage: ``` usage: plantuml-parser-cli [-f ] [-fdef] [-fpri] [-fpro] [-fpub] [-h] [-l ] [-mdef] [-mpri] [-mpro] [-mpub] [-o ] [-scom] [-sctr] [-spkg] -f,--filepath Set the input file/directory -fdef,--field_default Add default fields -fpri,--field_private Add private fields -fpro,--field_protected Add protected fields -fpub,--field_public Add public fields -h,--help Show the help -l,--language_level Set language level -mdef,--method_default Add default methods -mpri,--method_private Add private methods -mpro,--method_protected Add protected methods -mpub,--method_public Add public methods -o,--outfile Set the output file -scom,--show_comment Show comment -sctr,--show_constructors Show constructors -spkg,--show_package Show package ``` Run/Test: ```puml @startuml class ShowCommentOption { } abstract class FieldModifierWrapper { } class ShowDefaultConstructorsOption { } class FieldProtectedModifier { } interface ParserConfigUpdater { } class OutfilePathOption { } class FieldPublicModifier { } class CliOptionsHolder { } class HelpOption { } class FilePathOption { } abstract class MethodModifierWrapper { } class MethodPublicModifier { } class CliRunner { } interface CliOption { } class MethodPrivateModifier { } class FieldPrivateModifier { } class ShowConstructorsOption { } class ParserModifiers { } class ShowPackageOption { } class MethodDefaultModifier { } interface OptionProvider { } class MethodProtectedModifier { } class LanguageLevelOption { } class FieldDefaultModifier { } CliOption <|.. ShowCommentOption CliOption <|.. FieldModifierWrapper CliOption <|.. ShowDefaultConstructorsOption FieldModifierWrapper <|-- FieldProtectedModifier CliOption <|.. OutfilePathOption FieldModifierWrapper <|-- FieldPublicModifier CliOption <|.. HelpOption CliOption <|.. FilePathOption CliOption <|.. MethodModifierWrapper MethodModifierWrapper <|-- MethodPublicModifier OptionProvider <|-- CliOption ParserConfigUpdater <|-- CliOption MethodModifierWrapper <|-- MethodPrivateModifier FieldModifierWrapper <|-- FieldPrivateModifier CliOption <|.. ShowConstructorsOption CliOption <|.. ShowPackageOption MethodModifierWrapper <|-- MethodDefaultModifier MethodModifierWrapper <|-- MethodProtectedModifier CliOption <|.. LanguageLevelOption FieldModifierWrapper <|-- FieldDefaultModifier @enduml ``` ## plantuml-parser-core ```java public static void main(String[]args)throws IOException{ ParserConfig parserConfig=new ParserConfig(); parserConfig.addFilePath(filePath or fileDirectory); parserConfig.setOutFilePath(out file path); parserConfig.addMethodModifier(private or protected or default or public ); parserConfig.addFieldModifier(private or protected or default or public ); ParserProgram parserProgram=new ParserProgram(parserConfig); parserProgram.execute(); } ``` ## plantuml-parser-plugin

demo

## output ### demo ```puml @startuml class com.shuzijun.plantumlparser.core.PUmlClass { + String getPackageName() + void setPackageName(String) + String getClassName() + void setClassName(String) + String getClassType() + void setClassType(String) + void addPUmlFieldList(PUmlField) + void addPUmlMethodList(PUmlMethod) + String toString() } class com.shuzijun.plantumlparser.core.PUmlField { + String getVisibility() + void setVisibility(String) + boolean isStatic() + void setStatic(boolean) + String getType() + void setType(String) + String getName() + void setName(String) + String toString() } class com.shuzijun.plantumlparser.core.ParserConfig { + String getOutFilePath() + void setOutFilePath(String) + Set getFilePaths() + void addFilePath(String) + void addFieldModifier(String) + boolean isFieldModifier(String) + void addMethodModifier(String) + boolean isMethodModifier(String) } class com.shuzijun.plantumlparser.core.ClassVoidVisitor { + void visit(ClassOrInterfaceDeclaration,PUmlView) } class com.shuzijun.plantumlparser.core.PUmlMethod { + String getVisibility() + void setVisibility(String) + boolean isStatic() + void setStatic(boolean) + boolean isAbstract() + void setAbstract(boolean) + String getReturnType() + void setReturnType(String) + String getName() + void setName(String) + List getParamList() + void addParam(String) + String toString() } class com.shuzijun.plantumlparser.core.PUmlView { + void addPUmlClass(PUmlClass) + void addPUmlRelation(PUmlRelation) + String toString() } class com.shuzijun.plantumlparser.core.PUmlRelation { + void setSource(String) + void setTarget(String) + void setRelation(String) + String toString() } class com.shuzijun.plantumlparser.core.VisibilityUtils { + {static} String toCharacter(String) } class com.shuzijun.plantumlparser.core.ParserProgram { + void execute(ParserConfig) } com.github.javaparser.ast.visitor.VoidVisitorAdapter <|-- com.shuzijun.plantumlparser.core.ClassVoidVisitor @enduml ```