This article describes the operation of a method-based static code analyzer for .NET that constructs in-memory method call networks of compiled assemblies. You will also see a concrete application of static code analysis to generate a website providing easy insights on a sample application.
- codeanalyzerandtodosample.zip
- CodeAnalyzer and Sample Solution.sln
- Generate.cmd
- Generator
- Output
- Blank.html
- co_CreateToDoItem(int,string,Nullable[DateTime])_ToDoItem.html
- co_DeleteToDoItem(int)_void.html
- co_FindUserByName(string)_User.html
- co_GetToDoItem(int)_ToDoItem.html
- co_GetUser(int)_User.html
- co_ListAllToDoItems()_IEnumerable[ToDoItem].html
- co_ListAllUsers()_IEnumerable[User].html
- co_ListDoneItemsForUser(int)_IEnumerable[ToDoItem].html
- co_ListToDoItemsForUser(int)_IEnumerable[ToDoItem].html
- co_ListUsersMatching(string)_IEnumerable[User].html
- co_MarkToDoItemDone(int)_void.html
- co_UpdateToDoItem(int,string,Nullable[DateTime])_void.html
- CodeModel.css
- CodeModel.js
- Content.html
- Index.html
- IndexTop.html
- so_CreateToDoItem(int,string,Nullable[DateTime])_ToDoItem.html
- so_DeleteToDoItem(int)_void.html
- so_FindUserByName(string)_User.html
- so_GetUser(int)_User.html
- so_ListAllUsers()_List[User].html
- so_ListDoneItemsForUser(int)_List[ToDoItem].html
- so_ListToDoItemsForUser(int)_List[ToDoItem].html
- so_ListUsersMatching(string)_List[User].html
- so_MarkToDoItemDone(int)_void.html
- so_UpdateToDoItem(int,string,Nullable[DateTime])_ToDoItem.html
- ui_CreateNewToDoItemClicked(object,System.Windows.RoutedEventArgs)_void.html
- ui_DeleteClicked(object,System.Windows.RoutedEventArgs)_void.html
- ui_InitializeComponent()_void.html
- ui_MarkDoneClicked(object,System.Windows.RoutedEventArgs)_void.html
- ui_RefreshToDoItems()_void.html
- ui_SaveClicked(object,System.Windows.RoutedEventArgs)_void.html
- ui_ToDoItemSelected(object,System.Windows.Controls.SelectionChangedEventArgs)_void.html
- ui_UserSelected(object,System.Windows.Controls.SelectionChangedEventArgs)_void.html
- ui_WindowLoaded(object,System.Windows.RoutedEventArgs)_void.html
- SampleApp
- LocalTestRun.testrunconfig
- ToDoApplication
- ToDoContract
- ToDoSample.vsmdi
- ToDoService
- ToDoUnitTests
- StaticCodeAnalyzer
- Arebis.CodeAnalysis.Static
- Arebis.Common
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using Contract = ToDoSample.Contract;
using System.Security.Permissions;
namespace ToDoSample.Service
{
/// <summary>
/// Implementation of the IToDoService.
/// </summary>
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
internal class ToDoServiceImplementation : Contract.IToDoService
{
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.FamilyMember)]
List<Contract.User> Contract.IToDoService.ListAllUsers()
{
return ToDoComponentManager.ListAllUsers()
.ToContractType();
}
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.FamilyMember)]
List<Contract.User> Contract.IToDoService.ListUsersMatching(string nameMatchString)
{
return ToDoComponentManager.ListUsersMatching(nameMatchString)
.ToContractType();
}
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.Anyone)]
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.FamilyMember)]
Contract.User Contract.IToDoService.GetUser(int id)
{
return ToDoComponentManager.GetUser(id)
.ToContractType();
}
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.Anyone)]
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.FamilyMember)]
Contract.User Contract.IToDoService.FindUserByName(string name)
{
return ToDoComponentManager.FindUserByName(name)
.ToContractType();
}
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.FamilyMember)]
List<Contract.ToDoItem> Contract.IToDoService.ListToDoItemsForUser(int userId)
{
return ToDoComponentManager.ListToDoItemsForUser(userId)
.ToContractType();
}
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.FamilyMember)]
List<Contract.ToDoItem> Contract.IToDoService.ListDoneItemsForUser(int userId)
{
return ToDoComponentManager.ListDoneItemsForUser(userId)
.ToContractType();
}
[OperationBehavior(TransactionScopeRequired = true)]
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.FamilyMember)]
Contract.ToDoItem Contract.IToDoService.CreateToDoItem(int userId, string toDoText, DateTime? dueDate)
{
return ToDoComponentManager.CreateToDoItem(userId, toDoText, dueDate)
.ToContractType();
}
[OperationBehavior(TransactionScopeRequired = true)]
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.FamilyMember)]
Contract.ToDoItem Contract.IToDoService.UpdateToDoItem(int itemId, string toDoText, DateTime? dueDate)
{
ToDoComponentManager.UpdateToDoItem(itemId, toDoText, dueDate);
return ToDoComponentManager.GetToDoItem(itemId)
.ToContractType();
}
[OperationBehavior(TransactionScopeRequired = true)]
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.FamilyMember)]
void Contract.IToDoService.MarkToDoItemDone(int itemId)
{
ToDoComponentManager.MarkToDoItemDone(itemId);
}
[OperationBehavior(TransactionScopeRequired = true)]
[PrincipalPermission(SecurityAction.Demand, Role = Contract.SecurityRoles.FamilyHead)]
void Contract.IToDoService.DeleteToDoItem(int itemId)
{
ToDoComponentManager.DeleteToDoItem(itemId);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.