Files
rag_agent/RAG-TEST-TOOLS/__pycache__/static_analyzer.cpython-313.pyc

142 lines
20 KiB
Plaintext
Raw Normal View History

<EFBFBD>
;<3B><>i<EFBFBD>B<00><00><><00>SSKrSSKrSSKrSSKJr SSKrSSKrSSKrSSK r SSKJ
r
J r SSK J r SSKJrJr \
"\ R""55r\ "5r\\l1Skr1SkrSrSSKrSSKrSSKrSSKJr SSKrSSKrSSKrSSK r SSKJ
r
J r SSK J r SS KJrJr \
"\ R""55r\ "5r\\l1Skr1SkrSr"S
S 5rSS \S \S\4Sjjrg!\a SrSrNSf=f)<11>N)<01>Path)<02>Language<67>Parser)<01>OpenAI)<02> QWEN_API_KEY<45> QWEN_API_URL><00>.c<>.h<>.cpp<70>.hpp<70>.tcc><00>lib<69>Debug<75>build<6C>vendor<6F>external<61>.git<69> cmake-buildi`<60>)r<00> QWEN_API_BASEc<00><><00>\rSrSrSrSSjrSrSrS\4Sjr S\4S jr
S
\ 4S jr SS \ S \ 4SjjrSS\S\S\ 4SjjrSrSrg)<18>StaticAnalyzer<65>8u9静态分析器封装代码解析与规则审查逻辑Nc<00><><00>SnSnSSKn[USS5n[USS5nU=(d UnU=(d UnU(d[ S5 [ S5 U(d[ S5 [ S5 Sn[ U5(a [ S 5 Sn[ S
5 [ S U(aS OS 35 [ SU35 [UUS9Ulg![a [n[nN<>f=f)Nrrru警告: API Key 未配置u@请在 config.py 中设置 QWEN_API_KEY 或传入 api_key 参数u警告: API Base URL 未配置uB请在 config.py 中设置 QWEN_API_BASE 或传入 api_base 参数z1https://dashscope.aliyuncs.com/compatible-mode/v1uI警告: QWEN_API_BASE 是一个函数而不是字符串使用默认值uAPI 配置信息:z - API Key: u 已设置u 未设置z - API Base URL: )<02>base_url<72>api_key) <09>config<69>getattr<74> ImportErrorrr<00>print<6E>callabler<00>client)<08>selfr<00>api_base<73>config_api_key<65>config_api_baser<00>actual_api_key<65>actual_api_bases <20>.\static_analyzer.py<70>__init__<5F>StaticAnalyzer.__init__;s<><00><00><1D><0E><1E><0F> ,<2C> <19>$<24>V<EFBFBD>^<5E>T<EFBFBD>B<>N<EFBFBD>%<25>f<EFBFBD>n<EFBFBD>d<EFBFBD>C<>O<EFBFBD>!<21>2<>N<EFBFBD><0E>"<22>5<>o<EFBFBD><0F><1E> <11>-<2D> .<2E> <11>T<> U<><1E> <11>2<> 3<> <11>V<> W<>Q<>O<EFBFBD> <14>O<EFBFBD> $<24> $<24> <11>]<5D> ^<5E>Q<>O<EFBFBD> <0A>!<21>#<23> <0A> <0A>^<5E>k<EFBFBD><1B>M<>N<>O<> <0A>"<22>?<3F>"3<>4<>5<><1D>$<24>"<22>
<EFBFBD><04> <0B><>=<1B> ,<2C>)<29>N<EFBFBD>+<2B>O<EFBFBD> ,<2C>s<00>C<00>C,<03>+C,c<00>L^<08>/n[R"U5H<>up4nUVs/sHof[;dMUPM snUSS&UHTm[U4Sj[55(dM#[R
R UT5nURU5 MV M<> U$s snf)u4递归查找项目文件夹中的所有 C/C++ 文件Nc3<00>F># <00>UHnTRU5v<00> M g7f)N)<01>endswith)<03>.0<EFBFBD>ext<78>files <20>r(<00> <genexpr><3E>.StaticAnalyzer.find_c_files.<locals>.<genexpr>ps<00><><00><00>D<>^<5E>c<EFBFBD>t<EFBFBD>}<7D>}<7D>S<EFBFBD>)<29>)<29>^<5E>s<00>!)<08>os<6F>walk<6C> IGNORE_DIRS<52>any<6E>CPP_EXTENSIONS<4E>path<74>join<69>append) r"<00> project_path<74>c_files<65>root<6F>dirs<72>files<65>d<> full_pathr0s @r(<00> find_c_files<65>StaticAnalyzer.find_c_filesjs<><00><><00><14><07>!#<23><17><17><1C>!6<> <1D>D<EFBFBD><05>"&<26>?<3F>$<24>Q<EFBFBD>;<3B>*><3E>q<EFBFBD>$<24>?<3F>D<EFBFBD><11>G<EFBFBD><1D><04><16>D<>^<5E>D<>D<>D<> "<22><07><07> <0C> <0C>T<EFBFBD>4<EFBFBD> 8<>I<EFBFBD><1B>N<EFBFBD>N<EFBFBD>9<EFBFBD>-<2D><1E>"7<> <17><0E><> @s
<00> B!<06>B!c<00>
<00>[US5nUR5n[R"U5SnUR 5S;aUR S5nOUR S5nSSS5 WR S5nURU5nUH)nXS'[RRU5US'M+ U$!,(df  Na=f![an [S US
U 35 /sSn A $Sn A ff=f) u?从单个文件中提取所有函数包含GBK编码支持<E68C81>rb<72>encoding)<03>gbk<62>gb2312<31>cp936rG<00>utf-8N<38> file_path<74> file_nameu 处理文件 u 时出错: ) <0A>open<65>read<61>chardet<65>detect<63>lower<65>decode<64>encode<64>_extract_functionsr3r8<00>basename<6D> Exceptionr)
r"rK<00>f<>raw_datarF<00>text_str<74>
code_bytes<EFBFBD> functions<6E>func<6E>es
r(<00>extract_functions_from_file<6C>*StaticAnalyzer.extract_functions_from_fileus<><00><00> <16><15>i<EFBFBD><14>&<26>!<21><1C>6<EFBFBD>6<EFBFBD>8<EFBFBD><08>"<22>><3E>><3E>(<28>3<>J<EFBFBD>?<3F><08><1B>><3E>><3E>#<23>'A<>A<>'<27><EFBFBD><EFBFBD>u<EFBFBD>5<>H<EFBFBD>'<27><EFBFBD><EFBFBD>w<EFBFBD>7<>H<EFBFBD> '<27>"<22><1F><1F><17>1<>J<EFBFBD><1C>/<2F>/<2F>
<EFBFBD>;<3B>I<EFBFBD>!<21><04>$-<2D>[<5B>!<21>$&<26>G<EFBFBD>G<EFBFBD>$4<>$4<>Y<EFBFBD>$?<3F><04>[<5B>!<21>"<22><1D> <1C>'<27>&<26><><19> <16> <11>M<EFBFBD>)<29><1B>L<EFBFBD><11><03><<3C> =<3D><15>I<EFBFBD><49> <16>s6<00> C<00>A!C
<03>/AC<00>
C<07>C<00>
D<03>%C=<03>7D<03>=DrZc<00>v^^^^<05>[RT5nURn/mUUUU4SjmT"U5 T$)u.使用 Tree-sitter 解析并提取函数定义c<00>D><04>URS:XatURnURnTXRS5nTR UT5nTR UUUR SS-URSS-S.5 gURH nT "U5 M g)N<>function_definitionrJr<00>)<04>name<6D>code<64>
start_line<EFBFBD>end_line) <09>type<70>
start_byte<EFBFBD>end_byterR<00>_get_function_namer:<00> start_point<6E> end_point<6E>children)
<EFBFBD>node<64>start<72>end<6E> func_code<64> func_name<6D>childrZr[r"<00>traverses
<20><><EFBFBD><EFBFBD>r(ru<00>3StaticAnalyzer._extract_functions.<locals>.traverse<73>s<><00><><00><13>y<EFBFBD>y<EFBFBD>1<>1<><1C><0F><0F><05><1A>m<EFBFBD>m<EFBFBD><03>&<26>u<EFBFBD>1<>8<>8<><17>A<> <09> <20>3<>3<>D<EFBFBD>*<2A>E<> <09><19> <20> <20>%<25>%<25>"&<26>"2<>"2<>1<EFBFBD>"5<><01>"9<> $<24><0E><0E>q<EFBFBD> 1<>A<EFBFBD> 5<> "<12><13>"<22>]<5D>]<5D>E<EFBFBD><1C>U<EFBFBD>O<EFBFBD>+<2B>)<03>parser<65>parse<73> root_node)r"rZ<00>treerzr[rus`` @@r(rT<00>!StaticAnalyzer._extract_functions<6E>s9<00><><00><15>|<7C>|<7C>J<EFBFBD>'<27><04><18>N<EFBFBD>N<EFBFBD> <09><16> <09> $<24> $<24> <11><19><1B><18>rwc<00>0^^<08>U4SjmU4SjmSnURH:nURS:XaUn O'URS:XdM)T"U5nU(dM: O UcgT"U5nU(a)X%RURnUR S5$g) u提取函数名c<00>n><01>URS;aU$URHnT"U5nUcMUs $ g)N)<03>
declarator<EFBFBD>function_declarator<6F>pointer_declarator<6F>rhrn)rort<00>result<6C>find_declarators <20>r(r<><00>:StaticAnalyzer._get_function_name.<locals>.find_declarator<6F>s=<00><><00><13>y<EFBFBD>y<EFBFBD>W<>W<><1B> <0B><1D><1D><1D><05>(<28><15>/<2F><06><19>%<25>!<21>M<EFBFBD>'<27>rwc<00>v><01>URS:XaU$URHnT"U5nU(dMUs $ g)N<>
identifierr<EFBFBD>)rort<00>found<6E>find_identifiers <20>r(r<><00>:StaticAnalyzer._get_function_name.<locals>.find_identifier<65>s;<00><><00><13>y<EFBFBD>y<EFBFBD>L<EFBFBD>(<28><1B> <0B><1D><1D><1D><05>'<27><05>.<2E><05><18>5<EFBFBD> <20>L<EFBFBD>'<27>rwNr<4E><00> declarationz <unknown>rJz <unnamed>)rnrhrirjrR) r"<00> func_noderZrrt<00>
ident_node<EFBFBD>
name_bytesr<EFBFBD>r<>s @@r(rk<00>!StaticAnalyzer._get_function_name<6D>s<><00><><00> <18> <18><1A>
<EFBFBD><1E>'<27>'<27>E<EFBFBD><14>z<EFBFBD>z<EFBFBD>2<>2<>"<22>
<EFBFBD><15><16><1A><1A>}<7D>,<2C>,<2C>U<EFBFBD>3<>
<EFBFBD><1D>:<3A><19>(<28> <16> <1D><1E>$<24>Z<EFBFBD>0<>
<EFBFBD> <15>#<23>$9<>$9<>*<2A>:M<>:M<>N<>J<EFBFBD><1D>$<24>$<24>W<EFBFBD>-<2D> -<2D>rw<00>
excel_pathc<00>F<00>[R"USSS9n/nUR5H<>upE[U5S:aM[R"US5(a[ US5R 5OSn[R"US5(a[ US5R 5OSnU(dM<>US:XdM<>[R"US 5(a[ US 5R 5OS
US-3nURX<>S .5 M<> U$) u%从 Excel 加载启用的评审规则N<E58899>openpyxl)<02>header<65>engine<6E>rc<00><00><00>是r<00>R)<02>id<69> description)<08>pd<70>
read_excel<EFBFBD>iterrows<77>len<65>notna<6E>str<74>stripr:) r"r<><00>df<64>rules<65>idx<64>row<6F>desc<73>enabled<65>rule_ids r(<00>load_review_rules<65> StaticAnalyzer.load_review_rules<65>s<><00><00> <0F>]<5D>]<5D>:<3A>d<EFBFBD>:<3A> F<><02><12><05><1A> <0B> <0B> <0A>H<EFBFBD>C<EFBFBD><12>3<EFBFBD>x<EFBFBD>!<21>|<7C><18>*,<2C>(<28>(<28>3<EFBFBD>q<EFBFBD>6<EFBFBD>*:<3A>*:<3A>3<EFBFBD>s<EFBFBD>1<EFBFBD>v<EFBFBD>;<3B>$<24>$<24>&<26><02>D<EFBFBD>-/<2F>X<EFBFBD>X<EFBFBD>c<EFBFBD>!<21>f<EFBFBD>-=<3D>-=<3D>c<EFBFBD>#<23>a<EFBFBD>&<26>k<EFBFBD>'<27>'<27>)<29>2<EFBFBD>G<EFBFBD><13>t<EFBFBD><07>5<EFBFBD>(<28>13<31><18><18>#<23>a<EFBFBD>&<26>1A<31>1A<31>#<23>c<EFBFBD>!<21>f<EFBFBD>+<2B>+<2B>+<2B>-<2D><11>3<EFBFBD>QR<51>7<EFBFBD>)<29>}<7D><07><15> <0C> <0C>G<EFBFBD>A<>B<>&<26><15> rwrr<00> max_linesc <00>*<00>URSS9n[U5U::aU/$/n/nSnUHvnURU5 XgRS5URS5-
- n[U5U:<3A>dMJUS::dMRURSR U55 /nSnMx U(a URSR U55 U(dA[ S[U5U5H'nURSR X8X<38>-55 M) U$)u'将长函数代码分割为多个片段T)<01>keependsr<00>{<7B>}r<>)<06>
splitlinesr<EFBFBD>r:<00>countr9<00>range) r"rrr<><00>lines<65>chunks<6B>current<6E> brace_depth<74>line<6E>is r(<00>split_long_function<6F>"StaticAnalyzer.split_long_function<6F>s<><00><00><19>$<24>$<24>d<EFBFBD>$<24>3<><05> <0E>u<EFBFBD>:<3A><19> "<22><1D>;<3B> <1E><13><06><14><07><17> <0B><19>D<EFBFBD> <13>N<EFBFBD>N<EFBFBD>4<EFBFBD> <20> <17>:<3A>:<3A>c<EFBFBD>?<3F>T<EFBFBD>Z<EFBFBD>Z<EFBFBD><03>_<EFBFBD><<3C> <<3C>K<EFBFBD><12>7<EFBFBD>|<7C>y<EFBFBD>(<28>[<5B>A<EFBFBD>-=<3D><16> <0A> <0A>b<EFBFBD>g<EFBFBD>g<EFBFBD>g<EFBFBD>.<2E>/<2F><1C><07><1F> <0B><1A> <13> <12>M<EFBFBD>M<EFBFBD>"<22>'<27>'<27>'<27>*<2A> +<2B><15><1A>1<EFBFBD>c<EFBFBD>%<25>j<EFBFBD>)<29>4<><01><16> <0A> <0A>b<EFBFBD>g<EFBFBD>g<EFBFBD>e<EFBFBD>a<EFBFBD>m<EFBFBD>&<<3C>=<3D>><3E>5<><15> rw<00> func_infor<6F><00>modelc <00>H<00>USnUSnURU5n[U5n0nSn UGH.n
U
Sn U
Sn /n [U5H<>up<>U RU UUS-UUS9nURR
R RUSUS ./S
S S 9nURS RRR5n[R"U5nU R[UR!SS55SUS-SUR!SS53S.5 M<> ['SU 55nSR)SU 55nU UUS.X<>'GM1 U$!["a5nU RSSUS-S[%U5SS3S.5 SnAGMTSnAff=f)u6对单个函数应用所有启用的规则进行分析rdreu你是一名 C 语言安全审计专家。请根据以下特定编码或安全规则,严格审查提供的函数代码片段:
【审查规则】
{rule_description}
【代码上下文】
- 当前为函数 "{function_name}" 的第 {chunk_index}/{total_chunks} 片段
- 若函数被分片,请综合所有片段判断;若仅提供一片,则基于此片判断
【审查要求】
- 如果此代码片段**明确违反**上述规则,请指出:违规位置、风险说明、修复建议;
- 如果**未发现违规**,请回答:"本片段未发现违反该规则的问题"
- 如果因**代码不完整无法判断**(如只看到函数开头),请回答:"需结合完整函数判断"
- 回答必须简洁、基于事实用中文不超过50字。
【回答要求】
-请严格按以下 JSON 格式回答,不要包含任何额外文本、注释或 Markdown
{{
"has_issue": true 或 false,
"explanation": "简明解释为何存在或不存在该问题"
}}
【函数代码片段】
c
{code_chunk}
r<EFBFBD>r<>rc)<05>rule_description<6F> function_name<6D> chunk_index<65> total_chunks<6B>
code_chunk<EFBFBD>user)<02>role<6C>contentg<74><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?i<>)r<><00>messages<65> temperature<72>
max_tokensr<00> has_issueFu 【片段u<> explanationr<6E>)r<>r<>u】[分析错误] N<><4E>c3<00>*# <00>UH oSv<00> M g7f)r<>N<><00>r.<00>items r(r1<00>@StaticAnalyzer.analyze_function_against_rules.<locals>.<genexpr>5s<00><00><00>!N<> <0A><04>{<7B>"3<> <0A><><00><01>
c3<00>*# <00>UH oSv<00> M g7f)r<>Nr<4E>r<>s r(r1r<>6s<00><00><00>)X<>-<2D>$<24>}<7D>*=<3D>-<2D>r<EFBFBD>)r<>r<><00>analysis)r<>r<><00> enumerate<74>formatr!<00>chat<61> completions<6E>create<74>choices<65>messager<65>r<><00>json<6F>loadsr:<00>bool<6F>getrVr<>r6r9)r"r<>r<>r<>rs<00> full_coder<65><00>total<61> rule_results<74>RULE_BASED_PROMPT<50>ruler<65><00> rule_desc<73> chunk_resultsr<73><00>chunk<6E>prompt<70>response<73> raw_response<73>resr]<00>final_has_issue<75>final_explanations r(<00>analyze_function_against_rules<65>-StaticAnalyzer.analyze_function_against_rules<65>s<><00><00><1D>f<EFBFBD>%<25> <09><1D>f<EFBFBD>%<25> <09><15>)<29>)<29>)<29>4<><06><13>F<EFBFBD> <0B><05><19> <0C><04><19>0<1A>D<EFBFBD><1A>4<EFBFBD>j<EFBFBD>G<EFBFBD><1C>]<5D>+<2B>I<EFBFBD><1E>M<EFBFBD>%<25>f<EFBFBD>-<2D><08><01>*<2A>1<>1<>%.<2E>"+<2B> !<21>A<EFBFBD><05>!&<26>$<24> 2<><12><06><17>#<23>{<7B>{<7B>/<2F>/<2F>;<3B>;<3B>B<>B<>#<23>+1<>f<EFBFBD>"E<>!F<>$'<27>#&<26> C<01> <16>H<EFBFBD> $,<2C>#3<>#3<>A<EFBFBD>#6<>#><3E>#><3E>#F<>#F<>#L<>#L<>#N<>L<EFBFBD><1E>*<2A>*<2A>\<5C>2<>C<EFBFBD>!<21>(<28>(<28>%)<29>#<23>'<27>'<27>+<2B>u<EFBFBD>*E<>%F<>)2<>1<EFBFBD>q<EFBFBD>5<EFBFBD>'<27><13>S<EFBFBD>W<EFBFBD>W<EFBFBD>]<5D>TV<54>=W<><X<>'Y<>*<16><17>#.<2E>6"<22>!N<> <0A>!N<>N<>O<EFBFBD> $<24> <09> <09>)X<>-<2D>)X<> X<> <1D>%.<2E>,<2C>-<2D>%<0E>L<EFBFBD> !<21>G<1A>R<1C><1B><>!<21><17>!<21>(<28>(<28>%*<2A>)2<>1<EFBFBD>q<EFBFBD>5<EFBFBD>'<27>9K<39>C<EFBFBD>PQ<50>F<EFBFBD>SW<53>TW<54>L<EFBFBD>><3E>'Z<>*<16><17><17><><17>s<00>$CE"<04>"
F!<07>,)F<07>F!c<00> <00>[R"U/SQS9n[R"USS9nURUSSS9 URSnUR
H<>nSnUSR nUHFn [[U R55U:<3A>a [[U R55nMFMH [US -S
5n
X<EFBFBD>RUl M<> S S S 5 [S U35 g ! M<>=f!,(df  N%=f) u%将分析结果保存为 Excel 文件<E69687>u 文件名u 函数名u 规则名u 是否缺陷u 解释规则)<01>columnsr<73>)r<>Fu静态分析结果)<02>index<65>
sheet_namerr<><00>PNu分析结果已保存至: )r<><00> DataFrame<6D> ExcelWriter<65>to_excel<65>sheetsr<73><00> column_letterr<72>r<><00>value<75>min<69>column_dimensions<6E>widthr) r"<00>results<74> output_pathr<68><00>writer<65> worksheet<65>column<6D>
max_lengthr<EFBFBD><00>cell<6C>adjusted_widths r(<00>save_results_to_excel<65>$StaticAnalyzer.save_results_to_excel@s<><00><00> <0F>\<5C>\<5C>'<27>,
<EFBFBD> <0B><02><10>^<5E>^<5E>K<EFBFBD>
<EFBFBD> ;<3B>v<EFBFBD> <0E>K<EFBFBD>K<EFBFBD><06>e<EFBFBD>8L<38>K<EFBFBD> M<><1E> <0A> <0A>&:<3A>;<3B>I<EFBFBD>#<23>+<2B>+<2B><06><1E>
<EFBFBD> &<26>q<EFBFBD> <09> 7<> 7<> <0A>"<22>D<EFBFBD><1D><1E>s<EFBFBD>4<EFBFBD>:<3A>:<3A><EFBFBD>/<2F>*<2A><<3C>),<2C>S<EFBFBD><14><1A><1A>_<EFBFBD>)=<3D>J<EFBFBD>=<3D>#<23> "%<25>Z<EFBFBD>!<21>^<5E>R<EFBFBD>!8<><0E>CQ<43>+<2B>+<2B>M<EFBFBD>:<3A>@<40>,<2C><<3C> <0E>*<2A>;<3B>-<2D>8<>9<><39> <1D><1C><><<3C> ;<3B>s%<00>AC?<03>4AC7<06>4,C?<03>7C< <09>9C?<03>?
D )r!)NN)i@)zqwen-max)<14>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__doc__r)rBr^<00>bytesrTrkr<>r<><00>intr<74><00>dict<63>listr<74>r<00>__static_attributes__r<5F>rwr(rr8sr<00><00>C<>+
<EFBFBD>^ <17><16>,<19>U<EFBFBD><19>2'<1F><05>'<1F>R <15>C<EFBFBD> <15><16>S<EFBFBD><16>S<EFBFBD><16>4I<1C><04>I<1C>T<EFBFBD>I<1C>RU<52>I<1C>V:rwrr;<00> rules_excel<65> output_reportc <00><><00>[S5 [S5 [S5 [5n[S5 URU5n[S[U5S35 [SU35 UR U5n[S[U5S 35 U(d [S
5 g /nUHKn[S U35 UR U5nUR U5 [S [U5S35 MM [S[U5S35 /n [US5HQup<>[SU
S[U5SU SSU SS3 5 URX<>5n U RU U S.5 MS /n U HmnUSnUSnUSnUSR5HDunnURSS 5(aSOSnU RUUSUSUS 3UUS!S".5 MF Mo US#3nURU U5 US$3n[US%S&S'9nURS(5 URS)US*35 URS+US*35 URS,[U5S-35 URS.[U5S-35 URS/[U5S035 0nU H,nUSn U S1nUU;a/UU'UURU5 M. UR5GH2unnURS2[R R#U5S*35 URS3US435 UH<>nUSn URS5U SS6U S7S8U S9S:35 URS;5 U S<S=S>[U S<5S>:<3A>aS?OS@-nURU5 URSA5 USR5H8unnURSBUSUS S435 URUS!S435 M: URSC5 M<> GM5 S=S=S=5 [SD5 [SEU35 [SFU35 gG!,(df  N6=f)HuZ
静态分析主执行函数。
这是整合到主程序时需要调用的入口函数。
z=
============================================================u启动静态分析z<============================================================u正在加载评审规则...u
共加载 u 条启用的规则u正在扫描项目文件夹: u找到 u 个 C/C++ 文件u4未找到任何 C/C++ 文件请检查项目路径Fu正在处理文件: u 找到 u
个函数u
共找到 rcu
分析函数 <20>/z: rdu (来自 rL<00>))<02>functionr<6E>rr<>r<>r<>u<>[z] r<>r<>r<>z.xlsxz.md<6D>wrJ)rFu.# 基于规则的 C 函数静态分析报告
u**项目路径**: `z`
u**规则来源**: `u**分析文件数**: u
u**共分析函数**: u**启用规则数**: u
---
rKu ## 文件: `u**完整路径**: z
u ### 函数: `z` (Lrfz-Lrgz)
z```c
reNi<4E>z...r<>z
```
u #### 规则 [z---
u
分析完成uExcel 报告已保存至: uMarkdown 报告已保存至: T)rrr<>r<>rBr^<00>extendr<64>r<>r:<00>itemsr<73>rrM<00>writer3r8rU)r;rr<00>analyzerr<72>r<<00> all_functionsrKr[<00> all_resultsr<73>r\r<><00>
excel_rowsr<EFBFBD>r<>rsrLr<>r<><00>
issue_flag<EFBFBD>excel_output_path<74>md_output_pathrW<00>
files_dictr<00>snippets r(<00>run_static_analysisr(Vs<><00><00>

<EFBFBD>/<2F><1A> <09>
<1E><1F> <09>(<28>O<EFBFBD><1D><1F>H<EFBFBD> <09>
'<27>(<28> <14> &<26> &<26>{<7B> 3<>E<EFBFBD> <09>J<EFBFBD>s<EFBFBD>5<EFBFBD>z<EFBFBD>l<EFBFBD>"5<>
6<EFBFBD>7<> <09> )<29>,<2C><1E>
8<EFBFBD>9<><16>#<23>#<23>L<EFBFBD>1<>G<EFBFBD> <09>G<EFBFBD>C<EFBFBD><07>L<EFBFBD>><3E>!2<>
3<EFBFBD>4<> <12> <0A>D<>E<><14><16>M<EFBFBD><1C> <09> <0A>$<24>Y<EFBFBD>K<EFBFBD>0<>1<><1C>8<>8<><19>C<> <09><15><1C><1C>Y<EFBFBD>'<27> <0A> <09>#<23>i<EFBFBD>.<2E>)<29><1A>4<>5<> <1D> 
<EFBFBD>J<EFBFBD>s<EFBFBD>=<3D>)<29>*<2A>*<2A>
5<EFBFBD>6<><14>K<EFBFBD><1C>]<5D>A<EFBFBD>.<2E><07><01> <0A><0F><01>s<EFBFBD>!<21>C<EFBFBD> <0A>$6<>#7<>r<EFBFBD>$<24>v<EFBFBD>,<2C><1E>y<EFBFBD>QU<51>Va<56>Qb<51>Pc<50>cd<63>e<>f<><1F>><3E>><3E>t<EFBFBD>K<> <0C><13><1A><1A><1C>(<28>
<EFBFBD> <0B>/<2F><14>J<EFBFBD><1B><04><18><1A>$<24> <09><1D>f<EFBFBD>%<25> <09><1D>k<EFBFBD>*<2A> <09> <20><1E>0<>6<>6<>8<>L<EFBFBD>G<EFBFBD>S<EFBFBD>"%<25>'<27>'<27>+<2B>u<EFBFBD>"=<3D>"=<3D><15>5<EFBFBD>J<EFBFBD> <16> <1D> <1D>&<26>&<26> <20><17> <09><12>C<EFBFBD>0B<30>,C<>+D<>E<> *<2A> #<23>J<EFBFBD><0F> <0E> <0F>9<> <1C>)<29>/<2F><15>/<2F><15> <0C>"<22>"<22>:<3A>/@<40>A<>&<26><EFBFBD>c<EFBFBD>*<2A>N<EFBFBD> <0A>n<EFBFBD>c<EFBFBD>G<EFBFBD> 4<><01> <09><07><07>B<>C<> <09><07><07>%<25>l<EFBFBD>^<5E>5<EFBFBD>9<>:<3A> <09><07><07>%<25>k<EFBFBD>]<5D>%<25>8<>9<> <09><07><07>'<27><03>G<EFBFBD> <0C>~<7E>X<EFBFBD>><3E>?<3F> <09><07><07>'<27><03>M<EFBFBD>(:<3A>';<3B>8<EFBFBD>D<>E<> <09><07><07>'<27><03>E<EFBFBD>
<EFBFBD>|<7C>?<3F>C<>D<><17>
<EFBFBD><1F>D<EFBFBD><17>
<EFBFBD>#<23>D<EFBFBD><1C>[<5B>)<29>I<EFBFBD><18>
<EFBFBD>*<2A>(*<2A>
<EFBFBD>9<EFBFBD>%<25> <16>y<EFBFBD> !<21> (<28> (<28><14> .<2E>  <20>!+<2B> 0<> 0<> 2<> <1C>I<EFBFBD>u<EFBFBD> <0A>G<EFBFBD>G<EFBFBD>l<EFBFBD>2<EFBFBD>7<EFBFBD>7<EFBFBD>#3<>#3<>I<EFBFBD>#><3E>"?<3F>u<EFBFBD>E<> F<> <0A>G<EFBFBD>G<EFBFBD>(<28><19> <0B>4<EFBFBD>8<> 9<><1D><04><1B>J<EFBFBD>'<27><04><11><07><07>-<2D><04>V<EFBFBD> <0C>~<7E>T<EFBFBD>$<24>|<7C>:L<>9M<39>R<EFBFBD>PT<50>U_<55>P`<60>Oa<4F>af<61>g<>h<><11><07><07><08>!<21><1E>v<EFBFBD>,<2C>u<EFBFBD><04>-<2D>#<23>d<EFBFBD>6<EFBFBD>l<EFBFBD>:K<>d<EFBFBD>:R<><15>XZ<58>[<5B><07><11><07><07><07> <20><11><07><07> <0B>$<24>$(<28><1E>$8<>$><3E>$><3E>$@<40>L<EFBFBD>G<EFBFBD>S<EFBFBD><15>G<EFBFBD>G<EFBFBD>m<EFBFBD>G<EFBFBD>9<EFBFBD>B<EFBFBD>s<EFBFBD>;M<>7N<37>6O<36>t<EFBFBD>T<>U<><15>G<EFBFBD>G<EFBFBD>s<EFBFBD>:<3A><EFBFBD>/<2F>t<EFBFBD>4<>5<>%A<01><12><07><07> <09>"<22><1E>!3<>!
5<EFBFBD>>
<EFBFBD> <1D><1F> <09> &<26>'8<>&9<>
:<3A>;<3B> <09> )<29>.<2E>)9<>
:<3A>;<3B> <0F>E
5<EFBFBD> 4<>s <00>HQ<03>
Q#)<01> audit_report)r3<00>pandasr<73>r<><00>pathlibrrO<00> tree_sitter<65> tree_sitter_c<5F>tree_sitter_cpprr<00>openairrrr<00>language<67> CPP_LANGUAGErxr7r5<00>MAX_CHAR_LENGTHrrrr<>r(r<>rwr(<00><module>r3s<><00><01> <09><13> <0B><18><0E><12><14><16>(<28><19>-<2D><18><0F>0<>0<>2<>3<> <0C> <0F><18><06><1E><06><0F>6<><0E>T<> <0B><17><0F>
<EFBFBD><13> <0B><18><0E><12><14><16>(<28><19><19>2<><18><0F>0<>0<>2<>3<> <0C> <0F><18><06><1E><06><0F>6<><0E>T<> <0B><17><0F>[:<3A>[:<3A>|_<10>c<EFBFBD>_<10><03>_<10>C<EFBFBD>_<10><>] <13><19><17>L<EFBFBD><18>M<EFBFBD><19>s<00>C(<00>(
C5<03>4C5