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

40 KiB
Raw Blame History

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,直接解引用行为相同:无活动前置时都可能抛异常;不能称空值在所有入口安全。