HttpContext を使用して、今後の HTTP リクエストの現在のユーザー名を取得しますが、コベリティ分析を実行すると、リソース リークが報告されます。
public class UsersController:ApiController
{
private string userName;
public UsersController()
{
if (HttpContext.Current != null)
{
userName = HttpContext.Current.User.Identity.Name;
}
}
//I defined customized identity
public class MyIdentity : IIdentity
{
private string name;
public string AuthenticationType
{
get { return "Custom"; }
}
public bool IsAuthenticated
{
get { return true; }
}
public string Name { get; set; }
}
Coverity のレポートでは 2 と表示されています。 alloc_fn: 割り当てメソッド Identity.get から新しいリソースが返されます。(仮想呼び出しは System.Security.Claims.ClaimsPrincipal.Identity.get に解決されます。) 3. noescape: リソース System.Web.HttpContext.Current.User.Identity が閉じられていないか、Name.get に保存されていません。(仮想呼び出しは Org.Abc.HttpModules.MyIdentity.Name.get に解決されます。)
CID 51307: リソース リーク (RESOURCE_LEAK) 4.leaked_resource: System.Web.HttpContext.Current.User.Identity によって作成されたリソースを保存または閉じることができないと、リソースがリークします。