æåŸã«ããã®ãããªå°é£ãª2020幎ãçµããã«è¿ã¥ããŠããŸããã€ãŸããæ ªåŒãååŸãããšãã§ããä»å¹ŽãPVS-StudioããŒã ã¯ããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ã¢ãã©ã€ã¶ãŒã«ãã£ãŠçºèŠãããããŸããŸãªãã°ãæ±ã£ãå€ãã®èšäºãäœæããŸããã2020幎ã«CïŒãããžã§ã¯ãã§èŠã€ãã£ãTOPãšã©ãŒã§ããããã®äžã§æãè峿·±ããã®ãããã§èŠãããšãã§ããŸããããããŒãã¥ãŒã€ã³ã°ïŒ
ããããã©ã®ããã«åœ¢æãããã
ãã®ãªã¹ãã«ã¯ãç§ã®æèŠã§ã¯ãååãšç§ã2020幎ã®èšäºã§æžããæãè峿·±ãããªã¬ãŒãå«ãŸããŠããŸããéèŠãªéžæåºæºã¯ã察å¿ããã³ãŒããã©ã°ã¡ã³ãã§å®éã«ééãããã£ããšãã確信床ã§ããããããŠãã¡ãããå Žæãéžæãããé 眮ãããããéã«ã¯ãããªã¬ãŒã®ãé¢çœãããèæ ®ãããŸããããããã¯ãã§ã«ç§ã®äž»èгçãªæèŠã§ããã³ã¡ã³ãã§ãã€ã§ãææŠã§ããŸãã
PVS-Studioã¡ãã»ãŒãžãšãã³ãŒãèŠåãçºè¡ããããããžã§ã¯ãã®äž¡æ¹ã®èгç¹ãããããããã§ããã ã倿§åããããšããŸããããã®ãªã¹ãã«ã¯ã8ã€ã®æ€èšŒæžã¿ãããžã§ã¯ãã®ãœãŒã¹ã«é¢ããæ€åºãå«ãŸããŠããŸããåæã«ã蚺æã«ãŒã«ãç¹°ãè¿ãããããšã¯ã»ãšãã©ãããŸãããããã§2åäŒãããšãã§ããã®ã¯ã V3022ãš V3106ïŒããããç§ã¯ããããäœæããŸããã§ããããæããã«ããããã¯ç§ã®ãæ°ã«å ¥ãã§ãïŒããããã£ãŠãããã§ã¯å€æ§æ§ãä¿èšŒãããŠããŸã:)ã
ãããå§ããŸãããïŒããã10ïŒ
10äœ-æ°ããå€ãã©ã€ã»ã³ã¹
ç§ãã¡ã®ãããã®åçã¯ãRavenDBãããžã§ã¯ããäŸãšããŠäœ¿çšãããLinuxããã³macOSã®CïŒãããžã§ã¯ãã®ãã§ãã¯ã«é¢ãã1人ã®éåžžã«åªãã人ç©ã«ããèšäºããå§ãŸããŸã ã
private static void UpdateEnvironmentVariableLicenseString(....)
{
....
if (ValidateLicense(newLicense, rsaParameters, oldLicense) == false)
return;
....
}
ã¢ãã©ã€ã¶ãŒã®èŠåïŒ V3066ãValidateLicenseãã¡ãœããã«æž¡ãããåŒæ°ã®é åºãæ£ãããªãå¯èœæ§ããããŸãïŒãnewLicenseãããã³ãoldLicenseãã LicenseHelper.csïŒ177ïŒRaven.Server
ã©ããããããã§äœãåé¡ã«ãªã£ãŠããã®ã§ãããããã³ãŒãã¯éåžžã«ããŸãã³ã³ãã€ã«ãããŸãããªãã¢ãã©ã€ã¶ãŒã¯ãæåã«oldLicenseã転éããæ¬¡ã«newLicenseã転éããå¿ èŠããã ãš å€æããã®ã§ããïŒããªãã¯ãããæšæž¬ããŸãããïŒValidateLicense宣èšãèŠãŠã¿ãŸããã ïŒ
private static bool ValidateLicense(License oldLicense,
RSAParameters rsaParameters,
License newLicense)
ãããŒãããã¯æ¬åœã§ã-æåã«ãå€ããã®ããã©ã¡ãŒã¿ã«ããããããã-æ°ããã©ã€ã»ã³ã¹ãããŠãããªãã®ãã®åçåæã¯ãããæãããããšãã§ããŸããïŒ:)
ãããã«ãããããªã¬ãŒã¯è峿·±ããã®ã§ããé åºã¯ããã»ã©éèŠã§ã¯ãªããããããŸãããããã®ãããªãã©ã°ã¡ã³ããå確èªããæ¹ãè¯ãã§ããããåæããŸããïŒ
9äœ-ãFirstOrDefaultããšäºæããªããnullã
9äœã¯ä»å¹Žã®åãã«æžãããèšäºãPlayin "osuïŒ"ãééããå¿ããªãã§ãã ãããããã®è¿çã§ãã ïŒ
public ScoreInfo CreateScoreInfo(RulesetStore rulesets)
{
var ruleset = rulesets.GetRuleset(OnlineRulesetID);
var mods = Mods != null ? ruleset.CreateInstance()
.GetAllMods().Where(....)
.ToArray() : Array.Empty<Mod>();
....
}
ãšã©ãŒã衚瀺ãããŸããïŒãããŠåœŒå¥³ã¯ããã§ãïŒã¢ãã©ã€ã¶ãŒã¯äœãšèšã£ãŠããŸããïŒ
ã¢ãã©ã€ã¶ãŒã®èŠåïŒ V3146 [CWE-476]ãã«ãŒã«ã»ãããã®nulléåç §ã®å¯èœæ§ã 'FirstOrDefault'ã¯ãããã©ã«ãã®nullå€ãè¿ãããšãã§ããŸãã APILegacyScoreInfo.cs 24
ã¯ããã¯ããç¹°ãè¿ããŸãããå¿ èŠãªãã¹ãŠã®æ å ±ãäžåºŠã«æäŸããŸããã§ãããå®éããã®ã³ãŒãã«ã¯çããããã®ã¯äœã衚瀺ãããŸãããçµå±ã®ãšããã ã¢ãã©ã€ã¶ãŒãæããŠãããFirstOrDefaultã¯ãGetRulesetã¡ãœããã®å®çŸ©ã«å«ãŸããŠããŸã ã
public RulesetInfo GetRuleset(int id) =>
AvailableRulesets.FirstOrDefault(....);
ã²ã©ãããžãã¹ïŒé©åãªãã®ãèŠã€ãã£ãå Žåãã¡ãœããã¯RulesetInfoãè¿ã ãŸããããã§ãªããã°ïŒèœã¡çããŠnullãè¿ã ãŸãããããŠãããã¯åŒã³åºãã®çµæã䜿çšãããå Žæã§ãã§ã«æã¡ãŸãããã®å Žåãruleset.CreateInstanceïŒïŒãåŒã³åºããšã ã
çåãçããå¯èœæ§ããããŸãïŒnullããªãå Žåã¯ã©ããªã ãŸããïŒã³ã¬ã¯ã·ã§ã³ã«åžžã«ç¹å®ã®èŠçŽ ãããå Žåã¯ã©ããªããŸããïŒéçºè ãããã«ã€ããŠç¢ºä¿¡ããŠããå Žåã¯ãFirstOrDefaultã®ä»£ããã«Firstã䜿çšããŠã¿ ãŸãã ãïŒ
8äœ-Pythonããããã«ã¡ã¯
æåã®3ã€ããã®æåŸã®ããªã¬ãŒã¯ãRunUOãããžã§ã¯ãã³ãŒãã«å¯ŸããŠçºè¡ãããŸãããç¢ºèªæ¹æ³ã«é¢ããèšäºã¯2æã«æžããããã®ã§ããã¡ãããå ¥æã§ã ãŸãã
èŠã€ãã£ããã©ã°ã¡ã³ãã¯éåžžã«çããããã®ã§ããããããééãã§ãããã©ããã確å®ã«å€æããããšã¯å°é£ã§ãã
public override void OnCast()
{
if ( Core.AOS )
{
damage = m.Hits / 2;
if ( !m.Player )
damage = Math.Max( Math.Min( damage, 100 ), 15 );
damage += Utility.RandomMinMax( 0, 15 );
}
else { .... }
}
ã¢ãã©ã€ã¶ãŒã®èŠåïŒ V3043ã³ãŒãã®æäœããžãã¯ããã®ãã©ãŒãããã«å¯Ÿå¿ããŠããŸãããã¹ããŒãã¡ã³ãã¯å³ã«ã€ã³ãã³ããããŠããŸãããåžžã«å®è¡ãããŸããäžæ¬åŒ§ãæ¬ èœããŠããå¯èœæ§ããããŸããå°é.cs57
ããã§ã-ããã¯ã€ã³ãã³ãã«ã€ããŠã§ãïŒè¡ã® æå·+ = Utility.RandomMinMaxïŒ0ã15ïŒã¯ãm.Playerã falseã®å Žåã«ã®ã¿å®è¡ãããã¹ãã ã£ããã ã§ãã..ãåæ§ã«ãã€ã³ãã³ããçŸããã®ããã ãã§ãªããã¢ããªã±ãŒã·ã§ã³ã®ããžãã¯ãå®çŸ©ããããã®Pythonã³ãŒããæ©èœããŸããããããCïŒã³ã³ãã€ã©ã¯ãã®åé¡ã«é¢ããŠç°ãªãæèŠãæã£ãŠããŸãïŒéçºè ã®æèŠã¯ã©ãã§ãããïŒ
äžè¬ã«ããã®ç¶æ³ã§ã¯ã2ã€ã®ãªãã·ã§ã³ããããŸããããã§ã¯äžæ¬åŒ§ãå®éã«æ¬ èœããŠããŠããã¹ãŠãæ£ããæ©èœããŠããªããããã¹ãŠãæ£ããæ©èœããŠããŸãããæéã®çµéãšãšãã«ããããééããšèŠãªããŠãä¿®æ£ããã人ãå¿ ãããã§ãããã
ãã¶ãç§ã¯ééã£ãŠããŠããã®ãããªããšãæžããŠã倧äžå€«ãªå Žåãæ¬åœã«ãããŸããããªããããããç¥ã£ãŠãããªãã°ãã³ã¡ã³ããæžããŠãã ãã-ç§ã¯ãã®ãããªå Žåã«ã€ããŠç¥ããããšæããŸãã
7äœ-ããŒãã§ã¯ããŸãã¯ããŒãã§ã¯ã-ãããåé¡ã§ãïŒ
èŠåãå Žæã«é åžããããšã¯ãŸããŸãå°é£ã«ãªã£ãŠãããosuã«é¢ããèšäºãããã®ãªã¹ãã®2çªç®ã®ã¢ã©ãŒã ã«ç§»ã£ãŠã ãŸãïŒ ..ã
ãšã©ãŒã衚瀺ããããŸã§ã©ã®ãããããããŸããïŒ
protected override void CheckForResult(....)
{
....
ApplyResult(r =>
{
if ( holdNote.hasBroken
&& (result == HitResult.Perfect || result == HitResult.Perfect))
result = HitResult.Good;
....
});
}
ã¢ãã©ã€ã¶ãŒã®èŠåïŒ V3001ã||ãã®å·ŠåŽãšå³åŽã«åäžã®ãµãåŒãresult == HitResult.PerfectãããããŸãããªãã¬ãŒã¿ãŒãDrawableHoldNote.cs 266
ããã»ã©å€ãã¯ãªã ãšæããŸãããPVS-Studioã®èŠåãèªãå¿ èŠãããã ãã§ããéçåæã䜿çšããéçºè ã¯éåžžãããè¡ããŸã:)ãäžã®åã®å Žæã«ã€ããŠè°è«ããããšãã§ããŸãããããã§ã¯ééããæããã§ããHitResultåæã®ã©ã®ç¹å®ã®èŠçŽ ã2çªç®ã®Perfectã®ä»£ããã«ïŒãŸãããŸãã¯æåã®ä»£ããã«ïŒããã§äœ¿çšãã¹ãã ãèšãã®ã¯é£ãã ã§ãããçµå±ãäœããæããã«ééã£ãŠæžãããŠããŸãããããŠãããã¯å€§äžå€«ã§ã-ãšã©ãŒãèŠã€ãããŸãããããã¯ãããç°¡åã«ä¿®æ£ã§ããããšãæå³ããŸãã
6äœ-nullïŒã§ã¯ãªãïŒåæ ŒïŒ
6äœã¯ãOpen XMLSDKãããžã§ã¯ãããã®ã³ãŒãã«å¯Ÿããéåžžã«ã¯ãŒã«ãªå¿çã§ãããããããã§ãã¯ããããšã«é¢ããèšäºã¯ããã§èªãããšãã§ã ãŸãã
éçºè ã¯ãçŽæ¥å²ãåœãŠãããå Žåã§ãnullãè¿ããªãããããã£ãå®è£ ããããšèããŠããŸãã ããããŠãã©ã®ãããªç¶æ³ã§ãnullãæžã蟌ãŸããªãããšã確信ã§ããã®ã¯æ¬åœã«çŽ æŽããã ããšã§ããããããŸã£ããç¶æ³ã§ã¯ãªãã®ã¯æ®å¿µã§ãïŒ
internal string RawOuterXml
{
get => _rawOuterXml;
set
{
if (string.IsNullOrEmpty(value))
{
_rawOuterXml = string.Empty;
}
_rawOuterXml = value;
}
}
ããŒãµãŒèŠåïŒ V3008'_rawOuterXml '倿°ã«ã¯2åé£ç¶ããŠå€ãå²ãåœãŠãããŸããããããããã¯ééãã§ãããã§ãã¯è¡ïŒ164ã161ãOpenXmlElement.cs 164 _rawOuterXmlã«ã¯ãnullãã©ããã«é¢ä¿ãªãã å€ãèšé²ã
ããããšã ããããŸãããã®ã³ãŒããæ³šææ·±ãèŠããšãnullããã®ããããã£ã«æžã蟌ãŸããããšã¯æ±ºããŠãªããšæããããããŸãã -çµå±ã®ãšããããã§ãã¯ããããŸãïŒããã ãšããã°ãããªãŒã®äžã«ã¯ã®ããã§ã¯ãªããäºæããªã NullReferenceExceptionããããŸã:(
5äœ-å éšã«ã¢ã¬ã€ãããã¢ã¬ã€ããã®ã·ã§ãã
2020幎ã®äžäœ5ã€ã®ããªã¬ãŒã¯ãç§ãå人çã«ãã¹ãããTensorFlow.NETãããžã§ã¯ãã®ã¢ãã©ã€ã¶ãŒã«ãã£ãŠçºè¡ãããŸããããªã³ã¯ãã¯ãªãã¯ãããšã ãã®ãããžã§ã¯ãã®ãã§ãã¯ã«é¢ããèšäºãèªãããšãã§ããŸãïŒãããç§ã¯ããã«ããã¿ããªã«ããããäŒããŸããïŒã
ã¡ãªã¿ã«ãå®éã®CïŒãããžã§ã¯ãããã®è峿·±ããšã©ãŒã®äŸãèŠããå Žåã¯ãç§ã®twitterã賌èªããããšããå§ãããŸã ãããã§ã奜å¥å¿ããããããªã¬ãŒãšè峿·±ãã³ãŒããã©ã°ã¡ã³ããæçš¿ããäºå®ã§ãããæ®å¿µãªããããã®å€ãã¯èšäºã«å«ãŸããŸããããäŒãã§ããŠããããã§ãïŒ :)
ããŠãããªã¬ãŒã«ç§»ããŸãããïŒ
public TensorShape(int[][] dims)
{
if(dims.Length == 1)
{
switch (dims[0].Length)
{
case 0: shape = new Shape(new int[0]); break;
case 1: shape = Shape.Vector((int)dims[0][0]); break;
case 2: shape = Shape.Matrix(dims[0][0], dims[1][2]); break; // <=
default: shape = new Shape(dims[0]); break;
}
}
else
{
throw new NotImplementedException("TensorShape int[][] dims");
}
}
ã¢ãã©ã€ã¶ãŒã®èŠåïŒ V3106ã€ã³ããã¯ã¹ãç¯å²å€ã§ããå¯èœæ§ããããŸãã ã1ãã€ã³ããã¯ã¹ã¯ãdimsãã®å¢çãè¶ ããŠããŸãã TensorShape.cs 107
å®éããã®ããªã¬ãŒãã©ãã«çœ®ãããéžæããã®ã¯éåžžã«è峿·±ãã®ã§éåžžã«å°é£ã§ããããä»ã®äººã¯ãã®ç¹ã§ããã»ã©é ããŠããŸãããããã§ãããã§äœãèµ·ãã£ãŠããã®ããçè§£ããŸãããã
å ã®ã¢ã¬ã€ã®æ°å Žå èæããªãã1ã«çãããªãå ŽåãäŸå€NotImplementedExceptionã®ã¿ã€ãã§ãã ã¹ããŒããããŠãèæãå Žåã¯ã©ããªããŸãã æ£ç¢ºã«1ã€ã®é åïŒãã®ãé åå ã®é åãå ã®èŠçŽ ã®æ°ããã§ãã¯ãããŸãã 2ã®å Žåã«äœãèµ·ãããã«æ³šæããŠãã ãããShape.Matrixã³ã³ã¹ãã©ã¯ã¿ãŒãžã®åŒæ°ã®1ã€ãšã㊠ãäºæãããdims [1] [2]ãæž¡ãã ãŸããèŠããŠãããŸããã-dimsé åã«ã¯ããã€ã®èŠçŽ ããããŸãã ãïŒ
ããã§ããã¡ããã©1ã€ã§ã-ãã§ãã¯ããã°ããã§ãïŒ 1ã€ã®èŠçŽ ã®ã¿ãå«ãé åãã2çªç®ã®èŠçŽ ãååŸããããšãããšãIndexOutOfRangeExceptionäŸå€ãã¹ããŒãããŸã ãæããã«ééãã§ãããããããããä¿®æ£ããæçœãªæ¹æ³ã¯ãããŸããïŒ
æåã«é ã«æµ®ãã¶ã®ã¯å€åã§ã dims [1] [2]ãã dims [0] [2]ããšã©ãŒã¯ãªããªããŸããïŒã©ããªã«ïŒåã³åãäŸå€ããããŸãããããä»åã¯ããã®å Žåãdims [0]ã®èŠçŽ æ°ã2ã«çãããšããäºå®ã«é¢é£ããŸã ãéçºè ã¯ãã€ã³ããã¯ã¹ã«2ã€ã®ãšã©ãŒãç¶ããŠäœæããŸãããïŒãŸãã¯ãä»ã®å€æ°ãããã§äœ¿çšããå¿ èŠããããŸããïŒèª°ãç¥ã£ãŠããã...ã¢ãã©ã€ã¶ãŒã®ä»äºã¯ééããèŠã€ããããšã§ããããããäœã£ã人ãŸãã¯åœŒã®ååã¯ãããä¿®æ£ããå¿ èŠããããŸãã
4äœ-ååšããªããªããžã§ã¯ãã®ããããã£
OpenRAãã§ãã¯ã«é¢ããèšäºããå¥ã®ããªã¬ãŒããã®ãããã«å ¥ããŸãã ãããããããã¯ãã£ãšäŸ¡å€ããããããããŸããããéåœã®æå¿ã«ãã£ãŠããã®ããªã¬ãŒã¯4äœã§ããããŸãããããããªãè¯ãã§ãïŒä»åãPVS-Studioãæ€åºã§ãããšã©ãŒãèŠãŠã¿ãŸãããã
public ConnectionSwitchModLogic(....)
{
....
var logo = panel.GetOrNull<RGBASpriteWidget>("MOD_ICON");
if (logo != null)
{
logo.GetSprite = () =>
{
....
};
}
if (logo != null && mod.Icon == null) // <=
{
// Hide the logo and center just the text
if (title != null)
title.Bounds.X = logo.Bounds.Left;
if (version != null)
version.Bounds.X = logo.Bounds.X;
width -= logo.Bounds.Width;
}
else
{
// Add an equal logo margin on the right of the text
width += logo.Bounds.Width; // <=
}
....
}
ã¢ãã©ã€ã¶ãŒã®èŠåïŒ V3125'logo 'ãªããžã§ã¯ãã¯ãnullã«å¯ŸããŠæ€èšŒãããåŸã«äœ¿çšãããŸããããã§ãã¯ã©ã€ã³ïŒ236ã222ãConnectionLogic.cs 236
ããã§äœã«æ³šæãæãå¿ èŠããããŸããïŒããŠãåå¿è ã«ãšã£ãŠã ããŽã«ã¯ããããnullãå«ãŸããŠããå¯èœæ§ããã ãŸããããã¯ã宿°ãã§ãã¯ãšãããŽã«æžã蟌ãŸããå€ãè¿ãGetOrNullã¡ãœããã®ååã®äž¡æ¹ã«ãã£ãŠç€ºåãã ãŸã ããããããªããGetOrNullãå®éã«nullãè¿ãã å Žåã«äœãèµ·ããããèããŠã¿ãŸããã ãæåã¯ãã¹ãŠãé 調ã§ãããæ¬¡ã«ç¶æ ããã§ãã¯ãããŸã ããŽïŒ= null && mod.Icon == nullããæ³åã®ãšãããçµæã¯else -branchããã³...ã«é·ç§»ã ãŸããnullãæžã蟌ãŸããŠãã倿°ã® Boundsããããã£ã«ã¢ã¯ã»ã¹ããããšãã ãšã-bdyshïŒ NullReferenceExceptionããã¢ãããã¯ããŠããŸãã
3äœ-Schrödingerã®èŠçŽ
æåŸã«ããã¡ã€ããªã¹ãã®äžäœ3äœã«å ¥ããŸãã 2020幎ã®äžäœ3ã€ã®ãã°ã¯ãNethermindãããžã§ã¯ãã§èŠã€ãããŸããããã®æ€èšŒã«ã€ããŠãèå³ããããã¿ã€ãã«ã1è¡ã®ã³ãŒãããŸãã¯PVS-Studio CïŒforLinuxã䜿çšããNethermindã®ãã§ãã¯ãã§èšäºãæžãããŸãã ããšã©ãŒã¯éåžžã«åçŽã§ãããç¹ã«ãããžã§ã¯ãã®ãµã€ãºãèãããšã人éã®ç®ã«ã¯èŠããŸããããã®ããªã¬ãŒã¯ãã®å Žæã«å€ãããšæããŸããïŒ
public ReceiptsMessage Deserialize(byte[] bytes)
{
if (bytes.Length == 0 && bytes[0] == Rlp.OfEmptySequence[0])
return new ReceiptsMessage(null);
....
}
ã¢ãã©ã€ã¶ãŒã®èŠåïŒ V3106ã€ã³ããã¯ã¹ãç¯å²å€ã§ããå¯èœæ§ããããŸãã ã0ãã€ã³ããã¯ã¹ã¯ããã€ããã®å¢çãè¶ ããŠããŸãã Nethermind.Network ReceiptsMessageSerializer.cs 50
ããããã空ã®ããã¯ã¹ã§æåã®ãã®ãååŸã§ããã®ã¯ãã°ããã ããšã§ãããããã§ã¯ããã®ãããªèŠæ±ã«ãã£ãŠIndexOutOfRangeExceptionãã¹ããŒãããã ã ã§ãããã£ã1ã€ã®äºçްãªããš-ãªãã¬ãŒã¿ãŒã®å°ããªééãã§ãããã¢ããªã±ãŒã·ã§ã³ã¯ãã§ã«æ£ããæ©èœããŠããªãããã¯ã©ãã·ã¥ããããšãããããŸãã
ãã¡ãããã&&ãã®ä»£ããã«ã||ãã䜿çšããå¿ èŠããããŸãããã®ãããªè«çãšã©ãŒã¯ãç¹ã«è€éãªèšèšã§ã¯çããããšã§ã¯ãããŸããããããã£ãŠãèªåã¢ãŒãã§ãã®ãããªç¬éããã§ãã¯ããããšã¯éåžžã«äŸ¿å©ã§ãã
2äœ-2æªæºã3以äž
次ã«ãRavenDBãããžã§ã¯ãã®ã³ãŒãã«ãã1ã€ã®ããªã¬ãŒãèšå®ããŸãããæ€èšŒã®çµæã«ã€ããŠã¯ã察å¿ããèšäºã§ïŒã ãã§ãªãïŒèªãããšãã§ããããšãæãåºãã㊠ãã ããã
ããŠã仿è¿ããŸã-2020幎ã®ããã2ã®ééãïŒ
private OrderByField ExtractOrderByFromMethod(....)
{
....
if (me.Arguments.Count < 2 && me.Arguments.Count > 3)
throw new InvalidQueryException(....);
....
}
ã¢ãã©ã€ã¶ãŒã®èŠåïŒ V3022åŒ 'me.Arguments.Count <2 && me.Arguments.Count> 3'ã¯åžžã«falseã§ãããããã '||'ããã§ã¯æŒç®åã䜿çšããå¿ èŠããããŸãã QueryMetadata.csïŒ861ïŒRaven.Serverå ã»ã©
ãäºæããªãäŸå€ãã¹ããŒãããç¬éã確èªããŸããããéã«ãäºæãããäŸå€ãã¹ããŒãããããšã¯ãããŸãããããã§ãªããã°ã誰ãã2æªæºã3
ãè¶ ããæ°ãæãã€ããå Žåã§ããããã¯ç Žæ£ãã ãŸããåæããªãå Žåã§ãé©ãããšã§ã¯ãããŸãããããã®ããªã¬ãŒã¯ä»¥åã®ãã¹ãŠã®ããªã¬ãŒãããæ¬åœã«æ°ã«å ¥ã£ãŠããŸããã¯ãããšã©ãŒã¯éåžžã«åçŽã§ãããšã©ãŒãä¿®æ£ããã«ã¯ãæŒç®åã倿Žããã ãã§ããã¡ãªã¿ã«ãããã¯ã³ã³ã¹ãã©ã¯ã¿ãŒã«æž¡ãããã¡ãã»ãŒãžã«ãã£ãŠã瀺åãããŠããŸã InvalidQueryExceptionïŒ "ç¡å¹ãªORDERBY'spatial.distanceïŒfromãtoãroundFactorïŒ 'åŒã³åºãã2ã3åã®åŒæ°ãå¿ èŠãååŸ" + me.Arguments.Countã
ç§ã¯åæããŸããããã¯åºæ¬çãªèŠèœãšãã§ãããå°ãªããšãPVS-Studioã䜿çšããŠèŠã€ãããŸã§ãèª°ãæ°ã¥ãããä¿®æ£ãããããŸããã§ãããããã¯ãããã°ã©ããŒãã©ãã»ã©çµéšãç©ãã§ããŠããïŒæ®å¿µãªããïŒïŒäººéã§ããããšãæãåºãããŠãããŸãããããŠã人ã ã¯ãè³æ Œã«é¢ä¿ãªããããŸããŸãªçç±ã§ãã®ãããªæããªééãããèŠéãå¯èœæ§ããããŸãããšã©ãŒãããã«çºçããå Žåãããã°ã誀ã£ãORDERBYåŒã³åºãã«é¢ããã¡ãã»ãŒãžããŠãŒã¶ãŒã«è¡šç€ºãããªãçç±ãé·ãéæšæž¬ã§ããå ŽåããããŸãã
1äœ-+ 100ïŒ ã³ãŒãã®å®å šæ§ã®èŠç©ãã
ãã£ãããã£ãããã£ãïŒç§ãã¡ã¯ã€ãã«ããªã¬ãŒã«ãã©ãçããŸãããããã¯ç§ãæãè峿·±ããé¢çœãããã£ããããªã©ãèŠã€ããŸãããããã¯ãONLYOFFICEãããžã§ã¯ãã®ã³ãŒãã«å¯ŸããŠçºè¡ããããã®ã§ããããã®åæã¯ãä»å¹Žã®ææ°èšäºã®1ã€ã§ãããONLYOFFICEã³ãã¥ããã£ãµãŒããŒïŒãã°ãã»ãã¥ãªãã£åé¡ã«ã©ã®ããã«å¯äžããããã« é¢é£ä»ããããŠããŸãã
ããŠãç§ã¯ããªãã«ArgumentExceptionã«ã€ããŠã®æãæ²ãã話ãæç€ºããŸã ãããã¯æ±ºããŠæããããŸããïŒ
public void SetCredentials(string userName, string password, string domain)
{
if (string.IsNullOrEmpty(userName))
{
throw new ArgumentException("Empty user name.", "userName");
}
if (string.IsNullOrEmpty("password"))
{
throw new ArgumentException("Empty password.", "password");
}
CredentialsUserName = userName;
CredentialsUserPassword = password;
CredentialsDomain = domain;
}
ã¢ãã©ã€ã¶ãŒã®èŠåïŒ V3022åŒ 'string.IsNullOrEmptyïŒ "password"ïŒ'ã¯åžžã«falseã§ãã SmtpSettings.cs 104
ã©ã®ãšã©ãŒãã©ã®å Žæã«é 眮ããããéžæããã®ã¯éåžžã«å°é£ã§ããããæåãããã®ããªã¬ãŒããã¹ãŠã®ãªãŒããŒã§ãããæãåçŽãªãã€ããŒãªã¿ã€ããã¹-ãããŠã³ãŒãã¯ãã§ã«æ£ããæ©èœããŠããŸããã IDEã§ã®åŒ·èª¿è¡šç€ºããã¬ãã¥ãŒããå€ãè¯ãåžžèã圹ã«ç«ã¡ãŸããã§ãããå°ãããŠã·ã³ãã«ã§çŸããæžããã颿°ã§ãããããŠããã§ããPVS-Studioã¯å°éå®¶ãèŠéããŠãããã®ãèŠã€ããããšãã§ããŸããã
ãã€ãã®ããã«ãæªéã¯çްéšã«ãããŸãããã®ãããªè©³çްããã¹ãŠèªåçã«æ€çŽ¢ããããçŽ æŽããããšæããŸãããïŒãã¡ããããã§ãããïŒãããŠãéçºè ã«éçã¢ãã©ã€ã¶ãŒã§ã¯ã§ããªãããšããããŸããããåœŒã¯æ°ããçŸããå®å šãªã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã倿°ããã§ãã¯ãããšãã«äœåãªåŒçšç¬Šãä»ãããã©ãããèããã«äœæããŸãã
çµè«
2020幎ã®èšäºã§10ã®è峿·±ãééããèŠã€ããã®ã¯ç°¡åã§ãããããããããããå Žæã«é åžããããšã¯ããªãã®äœæ¥ã§ããããšã倿ããŸãããäžæ¹ã§ã¯ãäžéšã®ããªã¬ãŒã¯ãé«åºŠãªã¢ãã©ã€ã¶ãŒã¡ã«ããºã ã®åäœãããé©åã«åæ ããŠããŸããäžæ¹ã§ãããã€ãã®ééãã¯ããçšåºŠããããããã«èŠããŸããæç€ºãããäœçœ®ã®å€ãã¯éã«ããããšãã§ããŸã-ããšãã°ãããã2ãšããã3ã
ãããšãããã®ãªã¹ãã«ä»ã®ããžãã£ããªç¹ãããã¯ãã ãšæããŸããïŒå®éããªã³ã¯ããã©ãããšã§ç¬èªã®ããããäœæããããšãã§ããŸã èšäºã®ãªã¹ãã«ç§»åããããªãã®æèŠã§æãããããããªã¬ãŒãèŠã€ããŸãããã®å Žåãã³ã¡ã³ãã§2020幎ã®ããããæšãŠãŠãã ãããç§ã¯ããã倧ãã«åãã§èªã¿ãŸãããªã¹ããç§ã®ãã®ãããé¢çœãããããšãã§ããŸããïŒ
ãã¡ãããèŠåã®ãé¢çœããã®åé¡ã¯ãšã«ãã䞻芳çã§ããç§ã®æèŠã§ã¯ãå¿çãè©äŸ¡ããããã®äž»ãªåºæºã¯ãPVS-Studioããã®èŠåãèŠãããã°ã©ããŒãã察å¿ããã³ãŒãã®äœãã倿Žãããã©ããã§ãããã®ãªã¹ãã¯ããã©ã°ã¡ã³ãã®ããªã¬ãŒããäœæããããã®ã§ãããç§ã®æèŠã§ã¯ãéçºè ãéçåæã䜿çšããæ¹ãèŠæ ããè¯ããªããŸãããã®äžãããªãèªèº«ãŸãã¯ä»ã®ããã€ãã®ãããžã§ã¯ãããã§ãã¯ããããšã«ãã£ãŠPVS-Studioã詊ãããšã«åé¡ã¯ãããŸãããããªãã¯ãã ãªã³ã¯ããã©ãå¿ èŠããããŸã ãããã«å¿ èŠãªããŒãžã§ã³ã®ã¢ãã©ã€ã¶ãŒãããŠã³ããŒãããå°ããªãã©ãŒã ã«èšå ¥ããŠãã©ã€ã¢ã«ããŒããªã¯ãšã¹ãããŸãã
ããŠãããã§ãã¹ãŠã§ãããæž èŽããããšãããããŸããããŸããäŒãããŸãããïŒ
ãã®èšäºãè±èªã話ãèŽè¡ãšå ±æãããå Žåã¯ã翻蚳ãªã³ã¯ã䜿çšããŠãã ããïŒNikitaLipilinã 2020幎ã«CïŒãããžã§ã¯ãã§èŠã€ãã£ãããã10ã®ãã°ã