40 KiB
40 KiB
M15逐引用前置状态锚点
沿用已复核的142处引用;近邻声明由文本定位,不能当作完整C#方法归属或控制流支配证明。实际读取语句与原台账逐行对应。全局门锚点见主方案§3,未证明的入口保留限制,不以补文档为由新增业务保护。
| 引用位置 | 分类 | 近邻声明锚点 | 近邻条件锚点 | 前置状态/限制 |
|---|---|---|---|---|
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:63 | property-declaration | 41 | 64: internal bool IsInactiveForKVValidation => !IsInit && CurFishingEventData==null && eventChallengeMain==null && 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()) 153: InVisibleReason = $"IsTimeAllow Failed {ZZTimeHelper.UtcNow()} {fishingChallengeData?.StartTime} {fishingChallengeData?.EndTime}"; |
同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:160 | null-observation | 139 | 158: if (IsClearAllLevel()) 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) 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) 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 || eventChallengeConfig == null || eventChallengeMain == null) | 同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:574 | requires-active-context | 569 | 572: if (fishingChallengeData == null || eventChallengeConfig == null || 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? 915: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; 916: var finalPlayer = eventChallengeMain?.FinalPlayer? 917: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; |
同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:917 | null-observation | 896 | 915: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; 916: var finalPlayer = eventChallengeMain?.FinalPlayer? 917: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; |
同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:934 | null-observation | 896 | 933: var finalRewardList = eventChallengeMain?.FinalReward? 934: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; 935: var finalPlayer = eventChallengeMain?.FinalPlayer? 936: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; |
同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:936 | null-observation | 896 | 934: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; 935: var finalPlayer = eventChallengeMain?.FinalPlayer? 936: .ElementAtOrDefault(fishingChallengeData?.index ?? -1) ?? -1; |
同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:950 | null-observation | 946 | 948: if (CurFishingEventData == null) 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 || 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) 1091: return fishingChallengeData?.EventId + "_LL_FIRST_OPEN"; |
同为null时观察分支一致;不能覆盖同方法内其他直接解引用 |
| Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs:1091 | null-observation | 1087 | 1089: if (fishingChallengeData != null) 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()) 129: if(player._fishingFrequency<3 || !player.IsOpenMagnification || !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) 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); 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); 344: Check(challenge.fishingChallengeData==null && challenge.IsInactiveForKVValidation && chains.OfferChainsData==null && chains.IsInactiveForKVValidation && disco.OfferDiscoPartyData==null && disco.FreeTime==1 && disco.IsInactiveForKVValidation); 345: Check(partner.GatherData==null && partner.RuntimeEmptyForKVValidation && !ReferenceEquals(oldPartner,partner.PartnerInfoManager) && !ReferenceEquals(oldRobot,partner.RobotInvitationSystem)); 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,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。 |