CN117573140B - 一种通过扫描代码生成文档的方法、系统及装置 - Google Patents
一种通过扫描代码生成文档的方法、系统及装置 Download PDFInfo
- Publication number
- CN117573140B CN117573140B CN202410060903.2A CN202410060903A CN117573140B CN 117573140 B CN117573140 B CN 117573140B CN 202410060903 A CN202410060903 A CN 202410060903A CN 117573140 B CN117573140 B CN 117573140B
- Authority
- CN
- China
- Prior art keywords
- document
- code
- standard
- text
- annotation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000006870 function Effects 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012986 modification Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 10
- 230000015654 memory Effects 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 7
- 230000008676 import Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/169—Annotation, e.g. comment data or footnotes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Machine Translation (AREA)
Abstract
本申请公开了一种通过扫描代码生成文档的方法、系统及装置,通过获得并解析代码,获得代码的语法树文档和注释文档;根据语法树文档和注释文档,获得第一标准文档;同时,读取并解析用于生成目标文档的结构化文档,获得关键文本,关键文本用于描述结构化文档中待输入的部分;根据关键文本,对标准文档进行解析,获得与关键文本对应的标准文本;根据第一标准文本,将标准文本写入结构化文档中与关键文本匹配的位置,获得目标文档。提供了一种自动化文档生成方案,至少解决了程序代码完成或变更以后需要再手工编写文档,对于软件开发人员来说的工作量较大的问题。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种通过扫描代码生成文档的方法、系统及装置。
背景技术
随着软件开发技术的不断进步和市场对软件产品的日益增长的需求,软件开发的成熟度也在不断提高。为了满足这些需求,对软件开发过程的管理及工程能力的要求也随之提高,以确保软件制品能够满足高质量应用和交付的标准。
在软件开发过程中,各个阶段都需要加强管理,包括需求分析、设计、编码、测试、部署和维护等。同时,对各个阶段的输入输出物进行评估也是非常重要的,这有助于发现潜在的问题并及时进行调整。通过对软件开发过程的全面把控,可以确保软件制品在实际应用中能够达到预期的性能和功能,从而提高用户满意度。
在这个过程中,对软件开发人员的要求也会相应增多。首先,他们需要具备扎实的技术基础,以便能够熟练掌握各种开发工具和技术。其次,他们需要具备良好的沟通能力和团队协作精神,以便能够与团队成员有效沟通,共同解决问题。此外,他们还需要具备敏锐的市场洞察能力,以便能够准确把握市场需求,为组织创造更多的价值。
由于软件开发人员技术能力的参差不齐,因此也就存在一定缺陷。而当程序代码完成或变更以后需要再手工编写文档,对于软件开发人员来说的工作量较大。
发明内容
本发明提供了一种通过扫描代码生成文档的方法、系统及装置,提供了一种自动化文档生成方案,至少解决了程序代码完成或变更以后需要再手工编写文档,对于软件开发人员来说的工作量较大的问题。
本申请的实施例提供一种通过扫描代码生成文档的方法,包括以下步骤:
获取并解析第一代码,获得第一语法树文档和第一注释文档;
根据所述第一语法树文档和所述第一注释文档,获得第一标准文档;
读取并解析第一结构化文档,获得第一关键文本,所述第一关键文本是所述第一结构化文档中待输入部分的描述;
根据所述第一关键文本,对所述第一标准文档进行解析,获得与所述第一关键文本对应的第一标准文本;
根据所述第一标准文本,将所述第一标准文本写入所述第一结构化文档中与所述第一关键文本匹配的位置,获得第一目标文档。
可选的,所述获取并解析第一代码,获得第一语法树文档和第一注释文档的步骤,包括:
获取并解析第一代码,判断所述第一代码是否符合注释编写规则;
当所述第一代码符合注释编写规则时,获得第一语法树文档和第一注释文档;
当所述第一代码不符合注释编写规则时,获得所述第一代码中不符合所述注释编写规则的第一部分;
根据所述第一部分,确定所述第一部分的第一贡献者;
向所述第一贡献者发送提示信息。
可选的,所述获取并解析第一代码,获得第一语法树文档和第一注释文档的步骤,包括:
获得所述第一代码的源代码为第一源代码;
根据所述第一源代码,使用解析器对所述第一源代码进行解析,获得第一语法树文档;
根据所述第一源代码,使用注释提取工具对所述第一源代码进行解析,获得第一注释文档。
可选的,根据所述第一语法树文档和所述第一注释文档,获得第一标准文档的步骤,包括:
从根节点开始递归遍历所述第一语法树文档;
根据所述第一语法树文档,获得所述第一语法树文档中各个节点的类型,并从所述第一注释文档中提取与所述各个节点对应的注释;
根据所述各个节点的类型和所述各个节点对应的注释,分析所述各个节点对应的代码的结构和功能;
根据所述各个节点对应的代码的结构和功能,按照预设的第一格式,生成第一标准文档,所述第一标准文档包括所述各个节点、所述各个节点对应的代码的结构和功能的描述。
可选的,所述根据所述第一关键文本,对所述第一标准文档进行解析,获得与所述第一关键文本对应的第一标准文本的步骤,包括:
根据所述第一关键文本和所述第一标准文档,确定与所述第一关键文本相关的至少一个第一节点;
根据所述第一节点,获得与所述第一节点对应的代码的结构和功能的第一描述;
根据全部所述第一节点和全部所述第一描述进行汇总,生成第一标准文本。
可选的,所述根据所述第一关键文本和所述第一标准文档,确定与所述第一关键文本相关的至少一个第一节点的步骤,包括:
根据所述各个节点对应的代码的结构和功能的描述,对所述第一标准文档中各个节点进行分类,得到至少一个节点组,每个节点组对应一个独立的功能或模块;
根据预设的关键文本-分类映射,确定至少一个与所述第一关键文本对应的第一节点组;
根据所述第一节点组,确定与所述第一关键文本相关的至少一个第一节点。
可选的,所述根据所述第一标准文本,将所述第一标准文本写入所述第一结构化文档中与所述第一关键文本匹配的位置,获得第一目标文档的步骤之后,还包括:
将所述第一目标文档的第一大纲输出到用户终端,所述第一大纲至少包括第一关键文本;
接收所述用户终端对所述第一大纲的第一修改;
根据所述第一修改,将所述第一修改应用到所述第一目标文档中。
再一方面,一种通过扫描代码生成文档的系统,包括代码数据库、文档数据库和文档生成平台,其中:
所述文档生成平台被配置为:
从所述代码数据库读取并解析第一代码,获得第一语法树文档和第一注释文档;
根据所述第一语法树文档和所述第一注释文档,获得第一标准文档;
从所述文档数据库读取并解析第一结构化文档,获得第一关键文本,所述第一关键文本是所述第一结构化文档中待输入部分的描述;
根据所述第一关键文本,对所述第一标准文档进行解析,获得与所述第一关键文本对应的第一标准文本;
根据所述第一标准文本,将所述第一标准文本写入第一结构化文档中与第一关键文本匹配的位置,获得第一目标文档;
将所述第一目标文档存储到所述文档数据库;
所述代码数据库被配置为:
存储所述第一代码;
所述文档数据库被配置为:
存储所述第一结构化文档和所述第一目标文档。
可选的,所述文档生成平台还被配置为:
所述获取并解析第一代码,判断所述第一代码是否符合注释编写规则;
当所述第一代码符合注释编写规则时,获得第一语法树文档和第一注释文档;
当所述第一代码不符合注释编写规则时,获得所述第一代码中不符合所述注释编写规则的第一部分;
根据所述第一部分,确定所述第一部分的第一贡献者;
向所述第一贡献者发送提示信息。
再一方面,本申请的实施例还提供一种计算机装置,该计算机装置包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序,实现上述方法。
再一方面,本申请的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,处理器执行所述计算机程序,实现上述方法。
本发明与现有技术相比,具有如下的优点和有益效果:
本发明一种通过扫描代码生成文档的方法、系统及装置,通过获得并解析代码,获得代码的语法树文档和注释文档;根据语法树文档和注释文档,获得第一标准文档;同时,读取并解析用于生成目标文档的结构化文档,获得关键文本,关键文本用于描述结构化文档中待输入的部分;根据关键文本,对标准文档进行解析,获得与关键文本对应的标准文本;根据第一标准文本,将标准文本写入结构化文档中与关键文本匹配的位置,获得目标文档。提供了一种自动化文档生成方案,至少解决了程序代码完成或变更以后需要再手工编写文档,对于软件开发人员来说的工作量较大的问题。
上述方案还具有以下优点:自动化:这种方法可以自动生成文档,大大减轻了人工编写文档的工作量,提高了效率。
实时性:由于代码扫描工具可以实时检测代码的更改,因此生成的文档可以及时反映代码的最新状态,避免了传统文档编写方式中可能出现的滞后问题。
准确性:代码扫描工具通常会根据代码的结构和语义来生成文档,因此生成的文档通常比人工编写的文档更加准确。
可维护性:由于代码扫描工具可以自动生成文档,因此当代码发生变化时,文档也可以自动更新,大大降低了维护成本。
标准化:使用代码扫描工具可以确保生成的文档遵循统一的格式和标准,提高了文档的可读性和可维护性。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单的介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1为本申请中一种通过扫描代码生成文档的方法的流程示意图;
图2为本申请中一种通过扫描代码生成文档的系统示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本技术领域的人员更好地理解本公开方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
如图1所示,一种通过扫描代码生成文档的方法,由文档生成平台执行,包括以下步骤:
S1、获取并解析第一代码,获得第一语法树文档和第一注释文档;
可选的,获取并解析第一代码,获得第一语法树文档和第一注释文档的步骤,包括:
获得第一代码的源代码为第一源代码;
根据第一源代码,使用解析器对第一源代码进行解析,获得第一语法树文档;
根据第一源代码,使用注释提取工具对第一源代码进行解析,获得第一注释文档。
具体的,以Python为例,对Python的源代码进行解析并提取注释的代码:
import sys
from antlr4 import *
from Python3Lexer import Python3Lexer
from Python3Parser import Python3Parser
from collections import defaultdict
def extract_comments(source_code):
comments = defaultdict(list)
lexer = Python3Lexer(InputStream(source_code))
stream = CommonTokenStream(lexer)
parser = Python3Parser(stream)
tree = parser.file_input()
for token in stream.tokens:
if token.type == Python3Parser.COMMENT:
comments[token.line].append(token.text)
return comments
def main():
source_code = sys.stdin.read()
comments = extract_comments(source_code)
for line, comment_list in comments.items():
print(f"Line {line}:")
for comment in comment_list:
print(f"{comment}")
if __name__ == "__main__":
main()
上述代码可以完成解析第一代码,获得第一语法树文档和第一注释文档的功能,这将从your_python_source_code.py文件中提取语法树和注释,并将结果保存到comments文件中。
S2、根据第一语法树文档和第一注释文档,获得第一标准文档;
可选的,根据第一语法树文档和第一注释文档,获得第一标准文档的步骤,包括:
从根节点开始递归遍历第一语法树文档;
根据第一语法树文档,获得第一语法树文档中各个节点的类型,并从第一注释文档中提取与各个节点对应的注释;
根据各个节点的类型和各个节点对应的注释,分析各个节点对应的代码的结构和功能;
根据各个节点对应的代码的结构和功能,按照预设的第一格式,生成第一标准文档,第一标准文档包括各个节点、各个节点对应的代码的结构和功能的描述。
具体的,以Python为例,一种实现上述方法的具体代码:
import ast
def extract_comments(code):
comments = []
for node in ast.walk(ast.parse(code)):
if isinstance(node, ast.Expr) and isinstance(node.value, ast.Str):
comments.append(node.value.s)
return comments
def analyze_code(code):
tree = ast.parse(code)
functions = {}
variables = {}
for node in ast.walk(tree):
if isinstance(node, ast.FunctionDef):
functions[node.name] = {"args": [arg.arg for arg in node.args.args],"body": ast.dump(node)}
elif isinstance(node, ast.Assign):
for target in node.targets:
if isinstance(target, ast.Name):
variables[target.id] = ast.dump(node)
return functions, variables
def generate_documentation(functions, variables, comments):
documentation = ""
for function_name, function_info in functions.items():
documentation += f"## {function_name}
"
documentation += f"**Args:**
{' '.join([f'{arg}' for arg in function_info['args']])}
"
documentation += f"**Body:
{function_info['body']}
"
for variable_name, variable_info in variables.items():
documentation += f"## {variable_name}
"
documentation += f"**Value:
{variable_info}
"
documentation += "
".join(comments)
return documentation
code = """
# This is a sample code snippet
def add_numbers(a, b):# Add two numbers together
x = a + b# Calculate the sum
return x# Return the result
"""
comments = extract_comments(code)
functions, variables = analyze_code(code)
documentation = generate_documentation(functions, variables,comments)
print(documentation)
上述代码首先使用ast库解析代码并提取注释,然后,它分析代码以确定函数和变量,并将它们存储在字典中。最后,它使用这些信息生成一个文档,即第一标准文档,其中包含函数和变量的描述以及提取的注释。
S3、读取并解析第一结构化文档,获得第一关键文本,第一关键文本是第一结构化文档中待输入部分的描述;
S4、根据第一关键文本,对第一标准文档进行解析,获得与第一关键文本对应的第一标准文本;
可选的,根据第一关键文本,对第一标准文档进行解析,获得与第一关键文本对应的第一标准文本的步骤,包括:
根据第一关键文本和第一标准文档,确定与第一关键文本相关的至少一个第一节点;
根据第一节点,获得与第一节点对应的代码的结构和功能的第一描述;
根据全部第一节点和全部第一描述进行汇总,生成第一标准文本。
可选的,根据第一关键文本,对第一标准文档进行解析,获得与第一关键文本对应的第一标准文本的步骤,包括:
根据第一关键文本和第一标准文档,确定与第一关键文本相关的至少一个第一节点;
根据第一节点,获得与第一节点对应的代码的结构和功能的第一描述;
根据全部第一节点和全部第一描述进行汇总,生成第一标准文本。
可选的,根据第一关键文本和第一标准文档,确定与第一关键文本相关的至少一个第一节点的步骤,包括:
根据各个节点对应的代码的结构和功能的描述,对第一标准文档中各个节点进行分类,得到至少一个节点组,每个节点组对应一个独立的功能或模块;
根据预设的关键文本-分类映射,确定至少一个与第一关键文本对应的第一节点组;
根据第一节点组,确定与第一关键文本相关的至少一个第一节点。
具体的,一个在第一标准文档(standard_document)中查找包含第一关键文本(key_text)的第一行文本,并返回这一行文本作为第一标准文本的代码:
```python
def get_standard_text(key_text, standard_document):
for line in standard_document:
if key_text in line:
return line.strip()
key_text = "第一关键文本"
with open("标准文档.txt", "r", encoding="utf-8") as f:
standard_document = f.readlines()
first_standard_text = get_standard_text(key_text, standard_document)
print(first_standard_text)
S5、根据第一标准文本,将第一标准文本写入第一结构化文档中与第一关键文本匹配的位置,获得第一目标文档。
可选的,根据第一标准文本,将所述第一标准文本写入第一结构化文档中与第一关键文本匹配的位置,获得第一目标文档的步骤之后,还包括:
将所述第一目标文档的第一大纲输出到用户终端,所述第一大纲至少包括第一关键文本;
接收所述用户终端对所述第一大纲的第一修改;
根据所述第一修改,将所述第一修改应用到所述第一目标文档中。
采用上述方案,便于用户快速对第一目标文档的内容进行优化调整。
实施例2
本实施例在实施例1的基础上,可选的,一种统一编码标准的方法,在步骤S1、获取并解析第一代码,获得第一语法树文档和第一注释文档的基础上,包括:
获取并解析第一代码,判断第一代码是否符合注释编写规则;
当第一代码符合注释编写规则时,获得第一语法树文档和第一注释文档;
当第一代码不符合注释编写规则时,获得第一代码中不符合注释编写规则的第一部分;
根据第一部分,确定第一部分的第一贡献者;
向第一贡献者发送提示信息。
采用上述方法,能够确保采用实施例1中的方法进行文档生成的第一代码具有较高的一致性,便于在该方法的各个步骤对第一代码中的各个部分的代码和注释进行统一的处理,如果不使用本方法对第一代码进行预处理,在后续步骤中,由于不同程序员的编码习惯不同,提取出来的注释的文本也千奇百怪,很难采用统一的格式进行处理。
具体的,采用固定注释编写规则,具体注释编写规则如下:
全局变量:
单行注释:在行尾或者变量定义上方按照“/*!注释内容*/ ”格式编写注释;
多行注释:在行尾或者变量定义上方按照以下格式编写注释:
/*!
* 注释内容
*/ 。
宏定义:
单行注释:在行尾或者变量定义上方按照“/*!注释内容*/ ”格式编写注释
多行注释:在行尾或者变量定义上方按照以下格式编写注释:
/*!
* 注释内容
*/ 。
数据结构:
多行注释:在行尾或者变量定义上方按照以下格式编写注释:
/*!
* @brief: 数据结构名称
*/
其中使用@brief来声明该数据结构的名称。
函数单元:
多行注释:在行尾或者变量定义上方按照以下格式编写注释:
/*!
* @brief: 函数功能说明
* @param[I]: 输入参数1 参数说明
* @param[I]: 输入参数2 参数说明
* @param[O]: 输出参数3 参数说明
* @return: 返回值说明
* @function: 详细功能设计说明
*/
其中以上的标记都非必填,当按照上述标记编写注释时,在抽取时会默认忽略以上的标记。
函数体:
在语句关键字行尾及头部使用单行注释 ,在语句体里面使用单行或多行注释进行功能详情的说明。
单行注释:/*!注释内容*/;
多行注释:
/*!
* 注释内容
*/ 。
可选的,一种判断第一代码是否符合注释编写规则的方法,包括:
将第一代码的至少一部分输入到AIGC模型中,并向AIGC模型提问,查询该部分代码属于哪种类型,如全局变量、宏定义、数据结构、函数单元或函数体;
根据AIGC模型输出的该部分代码的类型,使用正则表达式或其他模型判断该部分代码是否符合注释编写规则;
将第一代码的另一部分输入到AIGC模型中,循环上述步骤,直到全部第一代码完成是否符合注释编写规则的判断。
实施例3
如图2所示,本实施例一种通过扫描代码生成文档的系统,包括代码数据库、文档数据库和文档生成平台,其中:
文档生成平台被配置为:
从代码数据库读取并解析第一代码,获得第一语法树文档和第一注释文档;
根据第一语法树文档和第一注释文档,获得第一标准文档;
从文档数据库读取并解析第一结构化文档,获得第一关键文本,第一关键文本是第一结构化文档中待输入部分的描述;
根据第一关键文本,对第一标准文档进行解析,获得与第一关键文本对应的第一标准文本;
根据第一标准文本,将第一标准文本写入第一结构化文档中与第一关键文本匹配的位置,获得第一目标文档;
将第一目标文档存储到文档数据库;
代码数据库被配置为:
存储第一代码;
文档数据库被配置为:
存储第一结构化文档和第一目标文档。
可选的,文档生成平台还被配置为:
获取并解析第一代码,判断第一代码是否符合注释编写规则;
当第一代码符合注释编写规则时,获得第一语法树文档和第一注释文档;
当第一代码不符合注释编写规则时,获得第一代码中不符合注释编写规则的第一部分;
根据第一部分,确定第一部分的第一贡献者;
向第一贡献者发送提示信息。
可选的,文档生成平台还被配置为执行实施例1或实施例2中的任意一种方法。
实施例4
本实施例提供一种计算机装置,该计算机装置包括存储器和处理器,存储器中存储有计算机程序,处理器执行计算机程序,实现上述任一方法。
实施例5
本实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,处理器执行计算机程序,实现上述任一方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。计算机可以是包括智能终端和服务器在内的各种计算设备。
在本公开的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取非易失性存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个非易失性存储介质中,包括若干指令用以使得一台计算机装置(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例方法的全部或部分步骤。而前述的非易失性存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅是本公开的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本公开原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本公开的保护范围。
Claims (9)
1.一种通过扫描代码生成文档的方法,其特征在于,包括以下步骤:
获取并解析第一代码,获得第一语法树文档和第一注释文档;
根据所述第一语法树文档和所述第一注释文档,获得第一标准文档;
读取并解析第一结构化文档,获得第一关键文本,所述第一关键文本是所述第一结构化文档中待输入部分的描述文本;
根据所述第一关键文本,对所述第一标准文档进行解析,获得与所述第一关键文本对应的第一标准文本;
根据所述第一标准文本,将所述第一标准文本写入所述第一结构化文档中与所述第一关键文本匹配的位置,获得第一目标文档;
根据所述第一语法树文档和所述第一注释文档,获得第一标准文档的步骤,包括:
从根节点开始递归遍历所述第一语法树文档;
根据所述第一语法树文档,获得所述第一语法树文档中各个节点的类型,并从所述第一注释文档中提取与所述各个节点对应的注释;
根据所述各个节点的类型和所述各个节点对应的注释,分析所述各个节点对应的代码的结构和功能;
根据所述各个节点对应的代码的结构和功能,按照预设的第一格式,生成第一标准文档,所述第一标准文档包括所述各个节点、所述各个节点对应的代码的结构和功能的描述。
2.根据权利要求1所述的一种通过扫描代码生成文档的方法,其特征在于,所述获取并解析第一代码,获得第一语法树文档和第一注释文档的步骤,包括:
获取并解析第一代码,判断所述第一代码是否符合注释编写规则;
当所述第一代码符合注释编写规则时,获得第一语法树文档和第一注释文档;
当所述第一代码不符合注释编写规则时,获得所述第一代码中不符合所述注释编写规则的第一部分;
根据所述第一部分,确定所述第一部分的第一贡献者;
向所述第一贡献者发送提示信息。
3.根据权利要求1所述的一种通过扫描代码生成文档的方法,其特征在于,所述获取并解析第一代码,获得第一语法树文档和第一注释文档的步骤,包括:
获得所述第一代码的源代码为第一源代码;
根据所述第一源代码,使用解析器对所述第一源代码进行解析,获得第一语法树文档;
根据所述第一源代码,使用注释提取工具对所述第一源代码进行解析,获得第一注释文档。
4.根据权利要求1所述的一种通过扫描代码生成文档的方法,其特征在于,所述根据所述第一关键文本,对所述第一标准文档进行解析,获得与所述第一关键文本对应的第一标准文本的步骤,包括:
根据所述第一关键文本和所述第一标准文档,确定与所述第一关键文本相关的至少一个第一节点;
根据所述第一节点,获得与所述第一节点对应的代码的结构和功能的第一描述;
根据全部所述第一节点和全部所述第一描述进行汇总,生成第一标准文本。
5.根据权利要求4所述的一种通过扫描代码生成文档的方法,其特征在于,所述根据所述第一关键文本和所述第一标准文档,确定与所述第一关键文本相关的至少一个第一节点的步骤,包括:
根据所述各个节点对应的代码的结构和功能的描述,对所述第一标准文档中各个节点进行分类,得到至少一个节点组,每个节点组对应一个独立的功能或模块;
根据预设的关键文本-分类映射,确定至少一个与所述第一关键文本对应的第一节点组;
根据所述第一节点组,确定与所述第一关键文本相关的至少一个第一节点。
6.根据权利要求1所述的一种通过扫描代码生成文档的方法,其特征在于,所述根据所述第一标准文本,将所述第一标准文本写入所述第一结构化文档中与所述第一关键文本匹配的位置,获得第一目标文档的步骤之后,还包括:
将所述第一目标文档的第一大纲输出到用户终端,所述第一大纲至少包括第一关键文本;
接收所述用户终端对所述第一大纲的第一修改;
根据所述第一修改,将所述第一修改应用到所述第一目标文档中。
7.一种通过扫描代码生成文档的系统,其特征在于,包括代码数据库、文档数据库和文档生成平台,其中:
所述文档生成平台被配置为:
从所述代码数据库读取并解析第一代码,获得第一语法树文档和第一注释文档;
根据所述第一语法树文档和所述第一注释文档,获得第一标准文档;根据所述第一语法树文档和所述第一注释文档,获得第一标准文档的步骤,包括:
从根节点开始递归遍历所述第一语法树文档;
根据所述第一语法树文档,获得所述第一语法树文档中各个节点的类型,并从所述第一注释文档中提取与所述各个节点对应的注释;
根据所述各个节点的类型和所述各个节点对应的注释,分析所述各个节点对应的代码的结构和功能;
根据所述各个节点对应的代码的结构和功能,按照预设的第一格式,生成第一标准文档,所述第一标准文档包括所述各个节点、所述各个节点对应的代码的结构和功能的描述;
从所述文档数据库读取并解析第一结构化文档,获得第一关键文本,所述第一关键文本是所述第一结构化文档中待输入部分的描述;
根据所述第一关键文本,对所述第一标准文档进行解析,获得与所述第一关键文本对应的第一标准文本;
根据所述第一标准文本,将所述第一标准文本写入第一结构化文档中与第一关键文本匹配的位置,获得第一目标文档;
将所述第一目标文档存储到所述文档数据库;
所述代码数据库被配置为:
存储所述第一代码;
所述文档数据库被配置为:
存储所述第一结构化文档和所述第一目标文档。
8.根据权利要求7所述的一种通过扫描代码生成文档的系统,其特征在于,所述文档生成平台还被配置为:
获取并解析第一代码,判断所述第一代码是否符合注释编写规则;
当所述第一代码符合注释编写规则时,获得第一语法树文档和第一注释文档;
当所述第一代码不符合注释编写规则时,获得所述第一代码中不符合所述注释编写规则的第一部分;
根据所述第一部分,确定所述第一部分的第一贡献者;
向所述第一贡献者发送提示信息。
9.一种计算机装置,其特征在于,该计算机装置包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序,实现根据权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410060903.2A CN117573140B (zh) | 2024-01-16 | 2024-01-16 | 一种通过扫描代码生成文档的方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410060903.2A CN117573140B (zh) | 2024-01-16 | 2024-01-16 | 一种通过扫描代码生成文档的方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117573140A CN117573140A (zh) | 2024-02-20 |
CN117573140B true CN117573140B (zh) | 2024-04-02 |
Family
ID=89886683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410060903.2A Active CN117573140B (zh) | 2024-01-16 | 2024-01-16 | 一种通过扫描代码生成文档的方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117573140B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488174A (zh) * | 2020-04-14 | 2020-08-04 | 苏州达家迎信息技术有限公司 | 应用程序接口文档的生成方法、装置、计算机设备及介质 |
CN114153459A (zh) * | 2021-12-03 | 2022-03-08 | 中国建设银行股份有限公司 | 接口文档生成方法及装置 |
CN114661342A (zh) * | 2022-03-15 | 2022-06-24 | 迷你创想科技(深圳)有限公司 | 代码文档化方法、装置、电子设备及存储介质 |
EP4254175A1 (en) * | 2022-03-31 | 2023-10-04 | Fujitsu Limited | Enriching code for code explainability |
CN117010345A (zh) * | 2023-08-15 | 2023-11-07 | 网易(杭州)网络有限公司 | 一种函数文档的生成方法、装置、设备及存储介质 |
-
2024
- 2024-01-16 CN CN202410060903.2A patent/CN117573140B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488174A (zh) * | 2020-04-14 | 2020-08-04 | 苏州达家迎信息技术有限公司 | 应用程序接口文档的生成方法、装置、计算机设备及介质 |
CN114153459A (zh) * | 2021-12-03 | 2022-03-08 | 中国建设银行股份有限公司 | 接口文档生成方法及装置 |
CN114661342A (zh) * | 2022-03-15 | 2022-06-24 | 迷你创想科技(深圳)有限公司 | 代码文档化方法、装置、电子设备及存储介质 |
EP4254175A1 (en) * | 2022-03-31 | 2023-10-04 | Fujitsu Limited | Enriching code for code explainability |
CN117010345A (zh) * | 2023-08-15 | 2023-11-07 | 网易(杭州)网络有限公司 | 一种函数文档的生成方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
‘R: Towards Detecting and Understanding Code-Document Violations in Rust;Wanrong Ouyang等;《2021 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW)》;20220215;1-9 * |
基于神经网络的代码文档自动生成技术;周航;《中国优秀硕士学位论文全文数据库 信息科技辑》;20220515;I138-242 * |
Also Published As
Publication number | Publication date |
---|---|
CN117573140A (zh) | 2024-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111708539B (zh) | 一种应用程序代码转换方法、装置、电子设备和存储介质 | |
US11893385B2 (en) | Methods and systems for automated software natural language documentation | |
KR101755365B1 (ko) | 레코드 포맷 정보의 관리 | |
JP4659946B2 (ja) | ラッパ文法を生成する方法 | |
CN106919612B (zh) | 一种上线结构化查询语言脚本的处理方法及装置 | |
CN111782117B (zh) | 界面的展示方法和装置、存储介质、电子装置 | |
CN114594933A (zh) | 基于文件扫描的前端代码生成方法、装置及存储介质 | |
CN114357943A (zh) | 一种通用高效Excel读取处理方法、工具、介质及设备 | |
CN114385148A (zh) | 一种实现联动功能的方法、装置、设备和存储介质 | |
CN117370242A (zh) | 通过解析接口文档生成多语言sdk客户端的适配器和方法 | |
CN117573140B (zh) | 一种通过扫描代码生成文档的方法、系统及装置 | |
CN112540925A (zh) | 新特性兼容性检测系统及方法、电子设备及可读存储介质 | |
CN116521621A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
WO2010025062A1 (en) | Automatic test map generation for system verification test | |
CN114528218A (zh) | 测试程序的生成方法、装置、存储介质以及电子设备 | |
CN111882419B (zh) | 质检文件的方法、装置及服务器 | |
Nakamura et al. | Enabling analysis and measurement of conventional software development documents using project-specific formalism | |
CN111475403A (zh) | 测试脚本的动态生成方法及相关装置 | |
CN116150105B (zh) | 一种电子档案长期保存封装包的读取和解析方法及系统 | |
CN111626585B (zh) | 脚本数据提取方法、装置、计算机设备和存储介质 | |
CN111221846B (zh) | 一种sql语句的自动翻译方法及装置 | |
CN114253548A (zh) | 一种xml文档处理方法、装置、电子设备及存储介质 | |
KR950011064B1 (ko) | 미등록 출력 메세지의 출력 조사 방법 | |
Minasyan et al. | Automatic Extraction of Financial Data in Credit Rating Analysis | |
CN114119263A (zh) | 基于大数据的数据核对方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |