Files
ft/CodexOutput/upserver/P2AlphaNullCompatibility/M15-逐引用前置锚点.md

149 lines
40 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# M15逐引用前置状态锚点
沿用已复核的142处引用;近邻声明由文本定位,不能当作完整C#方法归属或控制流支配证明。实际读取语句与原台账逐行对应。全局门锚点见主方案§3,未证明的入口保留限制,不以补文档为由新增业务保护。
| 引用位置 | 分类 | 近邻声明锚点 | 近邻条件锚点 | 前置状态/限制 |
|---|---|---|---|---|
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:63 | property-declaration | 41 | 64: internal bool IsInactiveForKVValidation => !IsInit && CurFishingEventData==null && eventChallengeMain==null &&<br>65: eventChallengeConfig==null && challengeMapData==null && _stageDropList.Count==0 && _eliminateListScore.Count==0; | 初始引用null;旧缺键未调用Init不等于清除已存在旧对象 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:72 | assignment | 70 | | 写入/Reset/反序列化/实例创建点;须结合对应调用前态,见语义报告 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:79 | assignment | 76 | 78: if(state==null) throw new ArgumentNullException(nameof(state)); | 写入/Reset/反序列化/实例创建点;须结合对应调用前态,见语义报告 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:112 | requires-active-context | 110 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:115 | requires-active-context | 110 | 115: if (fishingChallengeData.FirstOpen) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:117 | requires-active-context | 110 | 115: if (fishingChallengeData.FirstOpen) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:143 | null-observation | 139 | 143: if (fishingChallengeData == null) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:145 | requires-active-context | 139 | 143: if (fishingChallengeData == null) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:153 | null-observation | 139 | 151: if (!IsTimeAllow())<br>153: InVisibleReason = $"IsTimeAllow Failed {ZZTimeHelper.UtcNow()} {fishingChallengeData?.StartTime} {fishingChallengeData?.EndTime}"; | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:160 | null-observation | 139 | 158: if (IsClearAllLevel())<br>160: InVisibleReason = $"IsClearAllLevel Failed {ZZTimeHelper.UtcNow()} {fishingChallengeData?.RankTierLevel} {TopRankTier}"; | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:173 | requires-active-context | 169 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:174 | requires-active-context | 169 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:186 | assignment | 184 | | 写入/Reset/反序列化/实例创建点;须结合对应调用前态,见语义报告 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:202 | requires-active-context | 200 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:208 | requires-active-context | 205 | 208: if (fishingChallengeData.RankTierLevel <= TopRankTier) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:218 | assignment | 215 | | 写入/Reset/反序列化/实例创建点;须结合对应调用前态,见语义报告 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:227 | requires-active-context | 221 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:228 | requires-active-context | 221 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:229 | requires-active-context | 221 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:230 | requires-active-context | 221 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:231 | requires-active-context | 221 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:232 | requires-active-context | 221 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:233 | requires-active-context | 221 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:234 | requires-active-context | 221 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:251 | null-observation | 244 | 251: if (CurFishingEventData != null && fishingChallengeData != null && CurFishingEventData.ID != fishingChallengeData.EventId) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:256 | null-observation | 244 | 256: if (fishingChallengeData == null)<br>258: if (CurFishingEventData == null) // 不存在Event | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:262 | assignment | 244 | | 写入/Reset/反序列化/实例创建点;须结合对应调用前态,见语义报告 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:281 | null-observation | 278 | 281: if (fishingChallengeData != null)<br>283: if (!IsTimeAllow()) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:286 | requires-active-context | 278 | 286: if (fishingChallengeData.Finished == 0) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:324 | requires-active-context | 315 | 322: else if (status == 1) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:327 | requires-active-context | 315 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:332 | requires-active-context | 315 | 330: else if (status == 2) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:333 | comment | 315 | | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:352 | requires-active-context | 341 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:355 | requires-active-context | 341 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:363 | requires-active-context | 341 | 361: if (endIndex >= GetFullStep() - 1) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:365 | requires-active-context | 341 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:368 | requires-active-context | 341 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:382 | requires-active-context | 380 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:388 | requires-active-context | 386 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:398 | requires-active-context | 396 | 398: if (fishingChallengeData.Score == 0) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:404 | requires-active-context | 396 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:406 | requires-active-context | 396 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:436 | requires-active-context | 432 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:463 | requires-active-context | 455 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:555 | requires-active-context | 553 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:556 | requires-active-context | 553 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:557 | requires-active-context | 553 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:558 | comment | 553 | | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:559 | requires-active-context | 553 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:566 | comment | 562 | | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:572 | null-observation | 569 | 572: if (fishingChallengeData == null &#124;&#124; eventChallengeConfig == null &#124;&#124; eventChallengeMain == null) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:574 | requires-active-context | 569 | 572: if (fishingChallengeData == null &#124;&#124; eventChallengeConfig == null &#124;&#124; eventChallengeMain == null) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:592 | requires-active-context | 588 | 590: if (isSuccess) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:593 | requires-active-context | 588 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:605 | null-observation | 601 | 605: if (fishingChallengeData == null) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:618 | requires-active-context | 601 | 619: if (qualityScore > 0) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:621 | requires-active-context | 601 | 619: if (qualityScore > 0) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:622 | comment | 601 | | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:628 | requires-active-context | 601 | 629: .AddContent("tiler", eventChallengeMain?.ID) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:630 | requires-active-context | 601 | 629: .AddContent("tiler", eventChallengeMain?.ID) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:662 | requires-active-context | 659 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:686 | requires-active-context | 678 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:710 | requires-active-context | 704 | 708: if (_stageDropList.Count > 0) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:712 | requires-active-context | 704 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:723 | requires-active-context | 721 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:729 | requires-active-context | 727 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:735 | requires-active-context | 733 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:746 | requires-active-context | 741 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:799 | requires-active-context | 741 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:800 | requires-active-context | 741 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:812 | requires-active-context | 741 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:817 | requires-active-context | 741 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:831 | requires-active-context | 821 | 829: if (rand < 0) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:844 | null-observation | 840 | 844: if (fishingChallengeData != null) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:846 | requires-active-context | 840 | 844: if (fishingChallengeData != null) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:852 | requires-active-context | 840 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:853 | requires-active-context | 840 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:874 | assignment | 869 | 872: if (!isSuccess) | 写入/Reset/反序列化/实例创建点;须结合对应调用前态,见语义报告 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:902 | requires-active-context | 896 | 900: var tier = eventChallengeMain?.RankTier ?? -1; | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:915 | null-observation | 896 | 914: var finalRewardList = eventChallengeMain?.FinalReward?<br>915: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1;<br>916: var finalPlayer = eventChallengeMain?.FinalPlayer?<br>917: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:917 | null-observation | 896 | 915: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1;<br>916: var finalPlayer = eventChallengeMain?.FinalPlayer?<br>917: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:934 | null-observation | 896 | 933: var finalRewardList = eventChallengeMain?.FinalReward?<br>934: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1;<br>935: var finalPlayer = eventChallengeMain?.FinalPlayer?<br>936: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:936 | null-observation | 896 | 934: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1;<br>935: var finalPlayer = eventChallengeMain?.FinalPlayer?<br>936: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:950 | null-observation | 946 | 948: if (CurFishingEventData == null)<br>950: if (fishingChallengeData != null) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:952 | requires-active-context | 946 | 950: if (fishingChallengeData != null) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:953 | requires-active-context | 946 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:963 | null-observation | 946 | 963: if (fishingChallengeData != null) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:965 | requires-active-context | 946 | 963: if (fishingChallengeData != null) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:966 | requires-active-context | 946 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:975 | requires-active-context | 971 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:986 | requires-active-context | 971 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1009 | requires-active-context | 1001 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1034 | null-observation | 1028 | 1034: if (fishingChallengeData == null) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1044 | requires-active-context | 1028 | 1044: else if (fishingChallengeData.eliminateNumber == null &#124;&#124; fishingChallengeData.robotAccountList == null) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1074 | null-observation | 1072 | 1074: if (fishingChallengeData != null) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1076 | requires-active-context | 1072 | 1074: if (fishingChallengeData != null) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1084 | save-null-capable | 1082 | | null可序列化为原字符串null;证明旧代码能产出本样本,不意味着允许删除键 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1089 | null-observation | 1087 | 1089: if (fishingChallengeData != null)<br>1091: return fishingChallengeData?.EventId + "_LL_FIRST_OPEN"; | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1091 | null-observation | 1087 | 1089: if (fishingChallengeData != null)<br>1091: return fishingChallengeData?.EventId + "_LL_FIRST_OPEN"; | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1098 | requires-active-context | 1096 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1099 | requires-active-context | 1096 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/Services/UserService.KVFishingReward.cs:127 | null-observation | 58 | 127: if(challenge.fishingChallengeData!=null && challenge.ChallengeState()!=0 && challenge.ChallengeState()!=3 && challenge.IsTimeAllow())<br>129: if(player._fishingFrequency<3 &#124;&#124; !player.IsOpenMagnification &#124;&#124; !fish.IsOpenPiercing) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/Road/ChallengeMatchSceneRoadUI.cs:59 | requires-active-context | 52 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/Road/ChallengeMatchSceneRoad.cs:81 | alias-read | 66 | | RoadUI缓存别名_thisEventData;下一行82读取step,需要非null活动前置,已另追踪该别名 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/Road/ChallengeMatchPlayers.cs:149 | comment | 132 | 149: // if (i >= _fishingChallengeManager.fishingChallengeData.robotAccountList.Count) | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/Road/ChallengeMatchPlayers.cs:151 | comment | 132 | 149: // if (i >= _fishingChallengeManager.fishingChallengeData.robotAccountList.Count)<br>152: // if (robots.TryGetValue(_fishingChallengeManager.fishingChallengeData.robotAccountList[idx], | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/Road/ChallengeMatchPlayers.cs:152 | comment | 132 | 152: // if (robots.TryGetValue(_fishingChallengeManager.fishingChallengeData.robotAccountList[idx], | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/Road/ChallengeMatchPlayers.cs:160 | requires-active-context | 132 | 160: if (robots.TryGetValue(_fishingChallengeManager.fishingChallengeData.robotAccountList[i], | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/Road/ChallengeMatchPlayers.cs:229 | requires-active-context | 221 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/ChallengeMatchSceneUI.cs:139 | requires-active-context | 134 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/ChallengeMatchSceneUI.cs:175 | requires-active-context | 153 | 175: if (robots.TryGetValue(_fishingChallengeManager.fishingChallengeData.robotAccountList[i], out cfg.Robot robot)) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/ChallengeMatchSceneUI.cs:199 | comment | 153 | | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/ChallengeMatchSceneUI.cs:203 | comment | 153 | | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/ChallengeMatchSceneUI.cs:320 | requires-active-context | 310 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/ChallengeMatchSceneUI.cs:442 | comment | 310 | | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs:305 | validation-only | 150 | | 既有验证读取;不属于线上入口 |
| Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs:328 | validation-only | 150 | 328: Check(club.SnapshotForKVValidation().DonateCount==7 && challenge.fishingChallengeData!=null && chains.OfferChainsData!=null && disco.OfferDiscoPartyData!=null && partner.GatherData!=null && cube.EventData!=null);<br>330: Check(potion.PotionData!=null && pinball.PinballData!=null && scratch.ScratchTicketData!=null && progress.SnapshotForKVValidation().IsPresent && migration.SnapshotForKVValidation().IsPresent && pinataTarget.PurchasedCount==9 && digging.DataModel!=null); | 既有验证读取;不属于线上入口 |
| Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs:344 | validation-only | 150 | 343: Check(club.SnapshotForKVValidation().SignTime==null && club.SnapshotForKVValidation().DonateCount==0 && club.SnapshotForKVValidation().OpenRed);<br>344: Check(challenge.fishingChallengeData==null && challenge.IsInactiveForKVValidation && chains.OfferChainsData==null && chains.IsInactiveForKVValidation && disco.OfferDiscoPartyData==null && disco.FreeTime==1 && disco.IsInactiveForKVValidation);<br>345: Check(partner.GatherData==null && partner.RuntimeEmptyForKVValidation && !ReferenceEquals(oldPartner,partner.PartnerInfoManager) && !ReferenceEquals(oldRobot,partner.RobotInvitationSystem));<br>346: Check(cube.EventData==null && cube.IsInactiveForKVValidation && eventPack.SnapshotForKVValidation().PurchaseCount==0 && !piggy.KVLoadPresent && !bargain.KVLoadPresent && !shooting.KVLoadPresent && foot.CompleteFootPrintForKVValidation==0); | 既有验证读取;不属于线上入口 |
| Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs:695 | validation-only | 150 | 693: Check(state!=null && state.IsPresent); | 既有验证读取;不属于线上入口 |
| Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs:712 | validation-only | 150 | | 既有验证读取;不属于线上入口 |
| Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs:714 | validation-only | 150 | | 既有验证读取;不属于线上入口 |
| Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs:716 | validation-only | 150 | 718: Check(challenge.fishingChallengeData==null && challenge.IsInactiveForKVValidation); | 既有验证读取;不属于线上入口 |
| Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs:718 | validation-only | 150 | 718: Check(challenge.fishingChallengeData==null && challenge.IsInactiveForKVValidation); | 既有验证读取;不属于线上入口 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/ChallengeMatchScene1.cs:113 | requires-active-context | 100 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/ChallengeMatchScene1.cs:114 | comment | 100 | | 注释不执行,不能作为读取入口 |
| Client/Assets/Scripts/UI/Challenge/EventChallengeRewardPopupPanel.cs:78 | requires-active-context | 65 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Challenge/EventChallengeRewardPopupPanel.cs:92 | requires-active-context | 84 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/GampPlay/ChallengeMatch/ChallengeMatchScene.cs:46 | requires-active-context | 29 | 47: if (step < 0) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Challenge/EventChallengePanel.cs:170 | requires-active-context | 167 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Challenge/EventChallengePanel.cs:232 | requires-active-context | 227 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Challenge/EventChallengePanel.cs:233 | requires-active-context | 227 | 235: // if (oldScore == newScore && newScore = ) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Challenge/EventChallengeMatchingLoadingPanel.cs:143 | requires-active-context | 114 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Home/HomeBtnChallenge.cs:98 | requires-active-context | 67 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Home/HomeBtnChallenge.cs:113 | requires-active-context | 67 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Home/HomeBtnChallenge.cs:192 | requires-active-context | 185 | 192: else if (_fishingChallengeManager.PreScore != _fishingChallengeManager.fishingChallengeData.Score) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Home/HomeBtnChallenge.cs:211 | requires-active-context | 197 | 212: if ((float)(_fishingChallengeManager.fishingChallengeData.Score - _fishingChallengeManager.PreScore) / newScore > 0.05f) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Home/HomeBtnChallenge.cs:212 | requires-active-context | 197 | 212: if ((float)(_fishingChallengeManager.fishingChallengeData.Score - _fishingChallengeManager.PreScore) / newScore > 0.05f) | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Home/HomeBtnChallenge.cs:218 | requires-active-context | 197 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Home/HomeBtnChallenge.cs:219 | requires-active-context | 197 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Home/HomeBtnChallenge.cs:258 | requires-active-context | 232 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |
| Client/Assets/Scripts/UI/Home/HomeBtnChallenge.cs:259 | requires-active-context | 232 | | 若两种输入在fresh/Reset后均物化null,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |