SlideShare ist ein Scribd-Unternehmen logo
1 von 24
@mattein #SPCAF
Automated Code Quality Analysis
of SharePoint Solutions
#spsoslo
Matthias Einig
June 1st, 2013
@mattein #SPCAF
Thanks to our
Sponsors
Platinum
Gold
Silver
@mattein #SPCAF
Contact
@mattein
mail@matthiaseinig.de
www.matthiaseinig.de
Matthias Einig
SharePoint developer since SPS2003
MCSE, MCPD, MCITP, MSCA in
SharePoint 2007-2013
SCRUM Master and Product Owner
SharePoint Architect
Steria AB, www.steria.com
Stockholm, Sweden
Main Focus:
• Solution Architecture,
• Solution Development,
• SharePoint ALM,
• Solution Quality Assurance
sharepoint-community.net
@mattein #SPCAF
What is Code Analysis?
 Static vs. Dynamic
 Source Code vs. Object Code
 Manual vs. Automated
 Coding Errors, Best Practices
 Metrics
@mattein #SPCAF
Why is it so important for SharePoint?
 Solutions / apps are black boxes
 Code quality differs a lot
 Solutions change (ALM)
 Complexity complicates
maintainability
 Farm stability / security / licensing needs to be assured
 Policies / best practices are hard to enforce
@mattein #SPCAF
So, what the heck is SharePoint Code?
 .NET code using SP API
 XML Files: Manifest, Features,
Content Types, Web Templates
 HTML, ASPX, ASCX
 CSS, JavaScript
 Resources: images, resx, document templates…
 Deployment locations!
@mattein #SPCAF
Who needs it and why?
Is my code
correct and follows
best practices?
Developer
Will the code
harm my farm?
Administrator
Is the code
well designed and
maintainable?
Architect
Does the code
comply with
company policies
and standards?
Quality Manager
@mattein #SPCAF
What do we have right now?
ObjectCode FxCop / VS CA
FxCop Metrics
CAT.net
SourceCode StyleCop
SPCode SPDisposeCheck
MSOCAF
Checks against general coding errors
(not SharePoint-specific)
Calculates code metrics
(only .NET code, not SharePoint specific)
Checks coding style guidelines
(only .NET code, not SharePoint specific)
Analyses code security
(not SharePoint-specific)
Checks memory leaks
(SharePoint-specific)
Combination of FxCop and
SPDisposeCheck for SharePoint Online
@mattein #SPCAF
The Gap…
 No tool to check all SharePoint specific Code
 Analyze solution dependencies
 Calculate SharePoint metrics
 Show what’s inside the solution / app!
@mattein #SPCAF
The Solution!
@mattein #SPCAF
What is in it?
Identifies coding
violations against
~400 rules
Visualizes
dependencies
between SharePoint
elements
Calculates metrics
on SharePoint Code
Creates content
reports of packages
@mattein #SPCAF
SPCAF 4 Visual Studio
• Run SPCAF manually or on solution build
• Doubleclick results in Error List to open
the line of code
@mattein #SPCAF
• Information
• Warning
• Error
Configure Rulesets
@mattein #SPCAF
Continuous Integration
Run SPCAF in TeamBuild as Quality Gate
• Custom Build Activity
• Supports TFS 2010/2012 and Team Foundation Service (Cloud)
Build in TFS on-premises Build in Team Foundation Services
@mattein #SPCAF
Client Applications
• SPCAF runs on Azure (WCF Service)
• Available Clients:
Windows 8 App Desktop Client (WPF) Web Client (Silverlight)
SPCAF on Azure
@mattein #SPCAF
SPCAF Desktop/Online
@mattein #SPCAF
using SPCAF.Sdk;
using SPCAF.Sdk.Rules;
using SPCAF.Sdk.Model;
using SPCAF.Sdk.Model.Extensions;
1. Create empty class library
2. Add SPCAF.SDK.dll assembly reference
3. Create class and add usings
4. Add method stub by inheriting from ”Rule”
namespace SPSOslo.Rules
{
public class FeatureNameStartsWithSPSOslo : Rule<FeatureDefinition>
{
public override void Visit(FeatureDefinition target, NotificationCollection notifications)
{}
}
}
@mattein #SPCAF
5. Add Rule Metadata
namespace SPSOslo.Rules
{
[RuleMetadata(typeof(Naming),
CheckId = "SPC99001",
DisplayName = "Feature name should start with SPSOslo",
Description = "A feature name should be prefixed with 'SPSOslo'.",
DefaultSeverity = Severity.Warning,
SharePointVersion = new string[] { "12", "14", "15" },
Message = "Feature '{0}' should start with 'SPSOslo'.",
Resolution = "Change the folder name of the feature and add the name at the beginning, e.g.
'SPSOslo.Intranet.Components_ContentTypesFeature'.")]
public class FeatureNameStartsWithSPSOslo : Rule<FeatureDefinition>
{
...
@mattein #SPCAF
7. Build and drop the assembly into SPCAF installation folder
public class FeatureNameStartsWithSPSOslo : Rule<FeatureDefinition>
{
public override void Visit(FeatureDefinition target, NotificationCollection notifications)
{
if (!target.FeatureName.StartsWith("SPSOslo"))
{
string message = string.Format(this.MessageTemplate(), target.FeatureName);
Notify(target, message, notifications);
}
}
}
6. Implement the rule
@mattein #SPCAF
SharePoint Code Analysis
• is important for EVERYBODY 
• improves solution quality
• improves farm stability
SPCAF
• fills the tooling gap
• runs locally and in the cloud
• integrates in the ALM process
• is extensible
@mattein #SPCAF
Where do I get it?
Matthias Einig
@mattein
www.matthiaseinig.de
Follow us!
The SharePoint Code Quality Team
Torsten Mandelkow
@tmandelkow
blogs.msdn.com/b/torstenmandelkow
SPCAF
@spcaf
www.spcaf.com

Weitere ähnliche Inhalte

Was ist angesagt?

SpiraTest Integrating with Jira Webinar
SpiraTest Integrating with Jira WebinarSpiraTest Integrating with Jira Webinar
SpiraTest Integrating with Jira WebinarAdam Sandman
 
API Testing With Katalon Studio
API Testing With Katalon StudioAPI Testing With Katalon Studio
API Testing With Katalon StudioKnoldus Inc.
 
SpiraTest Overview Presentation (2019)
SpiraTest Overview Presentation (2019)SpiraTest Overview Presentation (2019)
SpiraTest Overview Presentation (2019)Inflectra
 
deliver:agile - Enable your Agile Team with Continuous Delivery Pipelines
deliver:agile - Enable your Agile Team with Continuous Delivery Pipelinesdeliver:agile - Enable your Agile Team with Continuous Delivery Pipelines
deliver:agile - Enable your Agile Team with Continuous Delivery PipelinesEsteban Garcia
 
Webinar - Rapise v6.6 | New Features and Enhancements
Webinar - Rapise v6.6 | New Features and EnhancementsWebinar - Rapise v6.6 | New Features and Enhancements
Webinar - Rapise v6.6 | New Features and EnhancementsInflectra
 
ATAGTR2017 Keeping pace with Product Evolution: UI Automation Framework Guide...
ATAGTR2017 Keeping pace with Product Evolution: UI Automation Framework Guide...ATAGTR2017 Keeping pace with Product Evolution: UI Automation Framework Guide...
ATAGTR2017 Keeping pace with Product Evolution: UI Automation Framework Guide...Agile Testing Alliance
 
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...Agile Testing Alliance
 
ATAGTR2017 Performance Testing of Big Data Application
ATAGTR2017 Performance Testing of Big Data ApplicationATAGTR2017 Performance Testing of Big Data Application
ATAGTR2017 Performance Testing of Big Data ApplicationAgile Testing Alliance
 
Why Test SAP PI/PO after any upgrade
Why Test SAP PI/PO after any upgradeWhy Test SAP PI/PO after any upgrade
Why Test SAP PI/PO after any upgradeDaniel Graversen
 
Comment tirer partie de Visual Studio Online pour vos développements SharePoint
Comment tirer partie de Visual Studio Online pour vos développements SharePointComment tirer partie de Visual Studio Online pour vos développements SharePoint
Comment tirer partie de Visual Studio Online pour vos développements SharePointGilles Pommier
 
Simplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless ToolsSimplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless ToolsSauce Labs
 
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?Vincent Biret
 
Best Practices for a Repeatable Shift-Left Commitment
Best Practices for a Repeatable Shift-Left CommitmentBest Practices for a Repeatable Shift-Left Commitment
Best Practices for a Repeatable Shift-Left CommitmentApplause
 
Deployment Automation in de praktijk
Deployment Automation in de praktijkDeployment Automation in de praktijk
Deployment Automation in de praktijkDelta-N
 
Episode 11 building & exposing rest api in salesforce v1.0
Episode 11   building & exposing rest api in salesforce v1.0Episode 11   building & exposing rest api in salesforce v1.0
Episode 11 building & exposing rest api in salesforce v1.0Jitendra Zaa
 
Katalon Studio - Successful Test Automation for both Testers and Developers
Katalon Studio - Successful Test Automation for both Testers and DevelopersKatalon Studio - Successful Test Automation for both Testers and Developers
Katalon Studio - Successful Test Automation for both Testers and DevelopersKatalon Studio
 
Slides: How to Select a PaaS
Slides: How to Select a PaaSSlides: How to Select a PaaS
Slides: How to Select a PaaSAltoros
 
Production testing and disaster recovery
Production testing and disaster recoveryProduction testing and disaster recovery
Production testing and disaster recoveryBizTalk360
 

Was ist angesagt? (20)

SpiraTest Integrating with Jira Webinar
SpiraTest Integrating with Jira WebinarSpiraTest Integrating with Jira Webinar
SpiraTest Integrating with Jira Webinar
 
API Testing With Katalon Studio
API Testing With Katalon StudioAPI Testing With Katalon Studio
API Testing With Katalon Studio
 
SpiraTest Overview Presentation (2019)
SpiraTest Overview Presentation (2019)SpiraTest Overview Presentation (2019)
SpiraTest Overview Presentation (2019)
 
deliver:agile - Enable your Agile Team with Continuous Delivery Pipelines
deliver:agile - Enable your Agile Team with Continuous Delivery Pipelinesdeliver:agile - Enable your Agile Team with Continuous Delivery Pipelines
deliver:agile - Enable your Agile Team with Continuous Delivery Pipelines
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Webinar - Rapise v6.6 | New Features and Enhancements
Webinar - Rapise v6.6 | New Features and EnhancementsWebinar - Rapise v6.6 | New Features and Enhancements
Webinar - Rapise v6.6 | New Features and Enhancements
 
ATAGTR2017 Keeping pace with Product Evolution: UI Automation Framework Guide...
ATAGTR2017 Keeping pace with Product Evolution: UI Automation Framework Guide...ATAGTR2017 Keeping pace with Product Evolution: UI Automation Framework Guide...
ATAGTR2017 Keeping pace with Product Evolution: UI Automation Framework Guide...
 
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
 
SPFx (SharePoint Framework)
SPFx (SharePoint Framework)SPFx (SharePoint Framework)
SPFx (SharePoint Framework)
 
ATAGTR2017 Performance Testing of Big Data Application
ATAGTR2017 Performance Testing of Big Data ApplicationATAGTR2017 Performance Testing of Big Data Application
ATAGTR2017 Performance Testing of Big Data Application
 
Why Test SAP PI/PO after any upgrade
Why Test SAP PI/PO after any upgradeWhy Test SAP PI/PO after any upgrade
Why Test SAP PI/PO after any upgrade
 
Comment tirer partie de Visual Studio Online pour vos développements SharePoint
Comment tirer partie de Visual Studio Online pour vos développements SharePointComment tirer partie de Visual Studio Online pour vos développements SharePoint
Comment tirer partie de Visual Studio Online pour vos développements SharePoint
 
Simplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless ToolsSimplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless Tools
 
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
 
Best Practices for a Repeatable Shift-Left Commitment
Best Practices for a Repeatable Shift-Left CommitmentBest Practices for a Repeatable Shift-Left Commitment
Best Practices for a Repeatable Shift-Left Commitment
 
Deployment Automation in de praktijk
Deployment Automation in de praktijkDeployment Automation in de praktijk
Deployment Automation in de praktijk
 
Episode 11 building & exposing rest api in salesforce v1.0
Episode 11   building & exposing rest api in salesforce v1.0Episode 11   building & exposing rest api in salesforce v1.0
Episode 11 building & exposing rest api in salesforce v1.0
 
Katalon Studio - Successful Test Automation for both Testers and Developers
Katalon Studio - Successful Test Automation for both Testers and DevelopersKatalon Studio - Successful Test Automation for both Testers and Developers
Katalon Studio - Successful Test Automation for both Testers and Developers
 
Slides: How to Select a PaaS
Slides: How to Select a PaaSSlides: How to Select a PaaS
Slides: How to Select a PaaS
 
Production testing and disaster recovery
Production testing and disaster recoveryProduction testing and disaster recovery
Production testing and disaster recovery
 

Andere mochten auch

SPCA2013 - SharePoint 2013 and Yammer Enterprise Social Compliance
SPCA2013 - SharePoint 2013 and Yammer Enterprise Social ComplianceSPCA2013 - SharePoint 2013 and Yammer Enterprise Social Compliance
SPCA2013 - SharePoint 2013 and Yammer Enterprise Social ComplianceNCCOMMS
 
SPCA2013 - Building a SharePoint Factory
SPCA2013 - Building a SharePoint FactorySPCA2013 - Building a SharePoint Factory
SPCA2013 - Building a SharePoint FactoryNCCOMMS
 
SPCA2013 - SharePoint Mobile Strategy and Design
SPCA2013 - SharePoint Mobile Strategy and DesignSPCA2013 - SharePoint Mobile Strategy and Design
SPCA2013 - SharePoint Mobile Strategy and DesignNCCOMMS
 
Developing high quality SharePoint solutions/apps with SPCAF #SP24
Developing high quality SharePoint solutions/apps with SPCAF #SP24Developing high quality SharePoint solutions/apps with SPCAF #SP24
Developing high quality SharePoint solutions/apps with SPCAF #SP24Matthias Einig
 
The Evolution of SharePoint
The Evolution of SharePointThe Evolution of SharePoint
The Evolution of SharePointMatthias Einig
 
Best practices for share point solution deployment
Best practices for share point solution deploymentBest practices for share point solution deployment
Best practices for share point solution deploymentSalaudeen Rajack
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryVirendra Bhalothia
 

Andere mochten auch (7)

SPCA2013 - SharePoint 2013 and Yammer Enterprise Social Compliance
SPCA2013 - SharePoint 2013 and Yammer Enterprise Social ComplianceSPCA2013 - SharePoint 2013 and Yammer Enterprise Social Compliance
SPCA2013 - SharePoint 2013 and Yammer Enterprise Social Compliance
 
SPCA2013 - Building a SharePoint Factory
SPCA2013 - Building a SharePoint FactorySPCA2013 - Building a SharePoint Factory
SPCA2013 - Building a SharePoint Factory
 
SPCA2013 - SharePoint Mobile Strategy and Design
SPCA2013 - SharePoint Mobile Strategy and DesignSPCA2013 - SharePoint Mobile Strategy and Design
SPCA2013 - SharePoint Mobile Strategy and Design
 
Developing high quality SharePoint solutions/apps with SPCAF #SP24
Developing high quality SharePoint solutions/apps with SPCAF #SP24Developing high quality SharePoint solutions/apps with SPCAF #SP24
Developing high quality SharePoint solutions/apps with SPCAF #SP24
 
The Evolution of SharePoint
The Evolution of SharePointThe Evolution of SharePoint
The Evolution of SharePoint
 
Best practices for share point solution deployment
Best practices for share point solution deploymentBest practices for share point solution deployment
Best practices for share point solution deployment
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
 

Ähnlich wie SPSOslo: Automated code quality analysis of SharePoint solutions

Assuringthecodequalityofsharepointsolutionsandapps 141023024802-conversion-ga...
Assuringthecodequalityofsharepointsolutionsandapps 141023024802-conversion-ga...Assuringthecodequalityofsharepointsolutionsandapps 141023024802-conversion-ga...
Assuringthecodequalityofsharepointsolutionsandapps 141023024802-conversion-ga...Vanessa Santangelo
 
Assuring the code quality of share point solutions and apps - Matthias Einig
Assuring the code quality of share point solutions and apps - Matthias EinigAssuring the code quality of share point solutions and apps - Matthias Einig
Assuring the code quality of share point solutions and apps - Matthias EinigSPC Adriatics
 
Deployment Design Patterns - Deploying Machine Learning and Deep Learning Mod...
Deployment Design Patterns - Deploying Machine Learning and Deep Learning Mod...Deployment Design Patterns - Deploying Machine Learning and Deep Learning Mod...
Deployment Design Patterns - Deploying Machine Learning and Deep Learning Mod...All Things Open
 
AllThingsOpen 2018 - Deployment Design Patterns (Dan Zaratsian)
AllThingsOpen 2018 - Deployment Design Patterns (Dan Zaratsian)AllThingsOpen 2018 - Deployment Design Patterns (Dan Zaratsian)
AllThingsOpen 2018 - Deployment Design Patterns (Dan Zaratsian)dtz001
 
Spsnyc transforming share point farm solutions to the add-in model and shar...
Spsnyc   transforming share point farm solutions to the add-in model and shar...Spsnyc   transforming share point farm solutions to the add-in model and shar...
Spsnyc transforming share point farm solutions to the add-in model and shar...spsnyc
 
Acing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointAcing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointJeremy Thake
 
[Pinto] Is my SharePoint Development team properly enlighted?
[Pinto] Is my SharePoint Development team properly enlighted?[Pinto] Is my SharePoint Development team properly enlighted?
[Pinto] Is my SharePoint Development team properly enlighted?European Collaboration Summit
 
#spsclt18 vincent biret #spfx #devops
#spsclt18 vincent biret #spfx #devops#spsclt18 vincent biret #spfx #devops
#spsclt18 vincent biret #spfx #devopsVincent Biret
 
Matthias Einig from Rencore - Transforming SharePoint farm solutions to the A...
Matthias Einig from Rencore - Transforming SharePoint farm solutions to the A...Matthias Einig from Rencore - Transforming SharePoint farm solutions to the A...
Matthias Einig from Rencore - Transforming SharePoint farm solutions to the A...Rencore
 
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...SUGES (SharePoint Users Group España)
 
Spca2014 sp ci with tfs online and azure matthias einig
Spca2014 sp ci with tfs online and azure matthias einigSpca2014 sp ci with tfs online and azure matthias einig
Spca2014 sp ci with tfs online and azure matthias einigNCCOMMS
 
Grow your SharePoint development platform with SPFx
Grow your SharePoint development platform with SPFxGrow your SharePoint development platform with SPFx
Grow your SharePoint development platform with SPFxDipti Chhatrapati
 
Uncovering the Latest in SharePoint Development
Uncovering the Latest in SharePoint DevelopmentUncovering the Latest in SharePoint Development
Uncovering the Latest in SharePoint DevelopmentEric Overfield
 
Developer Night - Opticon18
Developer Night - Opticon18Developer Night - Opticon18
Developer Night - Opticon18Optimizely
 
Productionalizing Models through CI/CD Design with MLflow
Productionalizing Models through CI/CD Design with MLflowProductionalizing Models through CI/CD Design with MLflow
Productionalizing Models through CI/CD Design with MLflowDatabricks
 
Opticon18: Developer Night
Opticon18: Developer NightOpticon18: Developer Night
Opticon18: Developer NightOptimizely
 
Developer Night Opticon 2017
Developer Night Opticon 2017Developer Night Opticon 2017
Developer Night Opticon 2017Optimizely
 

Ähnlich wie SPSOslo: Automated code quality analysis of SharePoint solutions (20)

Assuringthecodequalityofsharepointsolutionsandapps 141023024802-conversion-ga...
Assuringthecodequalityofsharepointsolutionsandapps 141023024802-conversion-ga...Assuringthecodequalityofsharepointsolutionsandapps 141023024802-conversion-ga...
Assuringthecodequalityofsharepointsolutionsandapps 141023024802-conversion-ga...
 
Assuring the code quality of share point solutions and apps - Matthias Einig
Assuring the code quality of share point solutions and apps - Matthias EinigAssuring the code quality of share point solutions and apps - Matthias Einig
Assuring the code quality of share point solutions and apps - Matthias Einig
 
Deployment Design Patterns - Deploying Machine Learning and Deep Learning Mod...
Deployment Design Patterns - Deploying Machine Learning and Deep Learning Mod...Deployment Design Patterns - Deploying Machine Learning and Deep Learning Mod...
Deployment Design Patterns - Deploying Machine Learning and Deep Learning Mod...
 
AllThingsOpen 2018 - Deployment Design Patterns (Dan Zaratsian)
AllThingsOpen 2018 - Deployment Design Patterns (Dan Zaratsian)AllThingsOpen 2018 - Deployment Design Patterns (Dan Zaratsian)
AllThingsOpen 2018 - Deployment Design Patterns (Dan Zaratsian)
 
Spsnyc transforming share point farm solutions to the add-in model and shar...
Spsnyc   transforming share point farm solutions to the add-in model and shar...Spsnyc   transforming share point farm solutions to the add-in model and shar...
Spsnyc transforming share point farm solutions to the add-in model and shar...
 
Acing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointAcing application lifecycle management in SharePoint
Acing application lifecycle management in SharePoint
 
[Pinto] Is my SharePoint Development team properly enlighted?
[Pinto] Is my SharePoint Development team properly enlighted?[Pinto] Is my SharePoint Development team properly enlighted?
[Pinto] Is my SharePoint Development team properly enlighted?
 
#spsclt18 vincent biret #spfx #devops
#spsclt18 vincent biret #spfx #devops#spsclt18 vincent biret #spfx #devops
#spsclt18 vincent biret #spfx #devops
 
Matthias Einig from Rencore - Transforming SharePoint farm solutions to the A...
Matthias Einig from Rencore - Transforming SharePoint farm solutions to the A...Matthias Einig from Rencore - Transforming SharePoint farm solutions to the A...
Matthias Einig from Rencore - Transforming SharePoint farm solutions to the A...
 
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
 
Shifan_QA_Resume
Shifan_QA_ResumeShifan_QA_Resume
Shifan_QA_Resume
 
Spca2014 sp ci with tfs online and azure matthias einig
Spca2014 sp ci with tfs online and azure matthias einigSpca2014 sp ci with tfs online and azure matthias einig
Spca2014 sp ci with tfs online and azure matthias einig
 
Grow your SharePoint development platform with SPFx
Grow your SharePoint development platform with SPFxGrow your SharePoint development platform with SPFx
Grow your SharePoint development platform with SPFx
 
Uncovering the Latest in SharePoint Development
Uncovering the Latest in SharePoint DevelopmentUncovering the Latest in SharePoint Development
Uncovering the Latest in SharePoint Development
 
Developer Night - Opticon18
Developer Night - Opticon18Developer Night - Opticon18
Developer Night - Opticon18
 
Productionalizing Models through CI/CD Design with MLflow
Productionalizing Models through CI/CD Design with MLflowProductionalizing Models through CI/CD Design with MLflow
Productionalizing Models through CI/CD Design with MLflow
 
Opticon18: Developer Night
Opticon18: Developer NightOpticon18: Developer Night
Opticon18: Developer Night
 
Developer Night Opticon 2017
Developer Night Opticon 2017Developer Night Opticon 2017
Developer Night Opticon 2017
 
SUG Bangalore - Kick Off Session
SUG Bangalore - Kick Off SessionSUG Bangalore - Kick Off Session
SUG Bangalore - Kick Off Session
 
catfx Datasheet_v1
catfx Datasheet_v1catfx Datasheet_v1
catfx Datasheet_v1
 

Mehr von Matthias Einig

Organisational Considerations for Customising SharePoint and Office 365
Organisational Considerations for Customising SharePoint and Office 365Organisational Considerations for Customising SharePoint and Office 365
Organisational Considerations for Customising SharePoint and Office 365Matthias Einig
 
Transforming SharePoint Farm Solutions to the App Model
Transforming SharePoint Farm Solutions to the App ModelTransforming SharePoint Farm Solutions to the App Model
Transforming SharePoint Farm Solutions to the App ModelMatthias Einig
 
SPS Helsinki: Transforming SharePoint Farm Solutions to the App Model
SPS Helsinki: Transforming SharePoint Farm Solutions to the App ModelSPS Helsinki: Transforming SharePoint Farm Solutions to the App Model
SPS Helsinki: Transforming SharePoint Farm Solutions to the App ModelMatthias Einig
 
Transforming SharePoint Farm Solutions to the App Model #SPSSTHLM23
Transforming SharePoint Farm Solutions to the App Model #SPSSTHLM23Transforming SharePoint Farm Solutions to the App Model #SPSSTHLM23
Transforming SharePoint Farm Solutions to the App Model #SPSSTHLM23Matthias Einig
 
Keynote - The future of SharePoint - SPC14 recap
Keynote - The future of SharePoint - SPC14 recapKeynote - The future of SharePoint - SPC14 recap
Keynote - The future of SharePoint - SPC14 recapMatthias Einig
 
Professional SharePoint Solution Deployment with PowerShell
Professional SharePoint Solution Deployment with PowerShellProfessional SharePoint Solution Deployment with PowerShell
Professional SharePoint Solution Deployment with PowerShellMatthias Einig
 
SPSD SharePoint Solution Deployer
SPSD SharePoint Solution DeployerSPSD SharePoint Solution Deployer
SPSD SharePoint Solution DeployerMatthias Einig
 
SSUG: SharePoint Application Lifecycle Management
SSUG: SharePoint Application Lifecycle ManagementSSUG: SharePoint Application Lifecycle Management
SSUG: SharePoint Application Lifecycle ManagementMatthias Einig
 

Mehr von Matthias Einig (9)

Organisational Considerations for Customising SharePoint and Office 365
Organisational Considerations for Customising SharePoint and Office 365Organisational Considerations for Customising SharePoint and Office 365
Organisational Considerations for Customising SharePoint and Office 365
 
Transforming SharePoint Farm Solutions to the App Model
Transforming SharePoint Farm Solutions to the App ModelTransforming SharePoint Farm Solutions to the App Model
Transforming SharePoint Farm Solutions to the App Model
 
SPS Helsinki: Transforming SharePoint Farm Solutions to the App Model
SPS Helsinki: Transforming SharePoint Farm Solutions to the App ModelSPS Helsinki: Transforming SharePoint Farm Solutions to the App Model
SPS Helsinki: Transforming SharePoint Farm Solutions to the App Model
 
Transforming SharePoint Farm Solutions to the App Model #SPSSTHLM23
Transforming SharePoint Farm Solutions to the App Model #SPSSTHLM23Transforming SharePoint Farm Solutions to the App Model #SPSSTHLM23
Transforming SharePoint Farm Solutions to the App Model #SPSSTHLM23
 
Keynote - The future of SharePoint - SPC14 recap
Keynote - The future of SharePoint - SPC14 recapKeynote - The future of SharePoint - SPC14 recap
Keynote - The future of SharePoint - SPC14 recap
 
Professional SharePoint Solution Deployment with PowerShell
Professional SharePoint Solution Deployment with PowerShellProfessional SharePoint Solution Deployment with PowerShell
Professional SharePoint Solution Deployment with PowerShell
 
Developing for SP2013
Developing for SP2013Developing for SP2013
Developing for SP2013
 
SPSD SharePoint Solution Deployer
SPSD SharePoint Solution DeployerSPSD SharePoint Solution Deployer
SPSD SharePoint Solution Deployer
 
SSUG: SharePoint Application Lifecycle Management
SSUG: SharePoint Application Lifecycle ManagementSSUG: SharePoint Application Lifecycle Management
SSUG: SharePoint Application Lifecycle Management
 

Kürzlich hochgeladen

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Kürzlich hochgeladen (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

SPSOslo: Automated code quality analysis of SharePoint solutions

  • 1. @mattein #SPCAF Automated Code Quality Analysis of SharePoint Solutions #spsoslo Matthias Einig June 1st, 2013
  • 2. @mattein #SPCAF Thanks to our Sponsors Platinum Gold Silver
  • 3. @mattein #SPCAF Contact @mattein mail@matthiaseinig.de www.matthiaseinig.de Matthias Einig SharePoint developer since SPS2003 MCSE, MCPD, MCITP, MSCA in SharePoint 2007-2013 SCRUM Master and Product Owner SharePoint Architect Steria AB, www.steria.com Stockholm, Sweden Main Focus: • Solution Architecture, • Solution Development, • SharePoint ALM, • Solution Quality Assurance sharepoint-community.net
  • 4. @mattein #SPCAF What is Code Analysis?  Static vs. Dynamic  Source Code vs. Object Code  Manual vs. Automated  Coding Errors, Best Practices  Metrics
  • 5. @mattein #SPCAF Why is it so important for SharePoint?  Solutions / apps are black boxes  Code quality differs a lot  Solutions change (ALM)  Complexity complicates maintainability  Farm stability / security / licensing needs to be assured  Policies / best practices are hard to enforce
  • 6. @mattein #SPCAF So, what the heck is SharePoint Code?  .NET code using SP API  XML Files: Manifest, Features, Content Types, Web Templates  HTML, ASPX, ASCX  CSS, JavaScript  Resources: images, resx, document templates…  Deployment locations!
  • 7. @mattein #SPCAF Who needs it and why? Is my code correct and follows best practices? Developer Will the code harm my farm? Administrator Is the code well designed and maintainable? Architect Does the code comply with company policies and standards? Quality Manager
  • 8. @mattein #SPCAF What do we have right now? ObjectCode FxCop / VS CA FxCop Metrics CAT.net SourceCode StyleCop SPCode SPDisposeCheck MSOCAF Checks against general coding errors (not SharePoint-specific) Calculates code metrics (only .NET code, not SharePoint specific) Checks coding style guidelines (only .NET code, not SharePoint specific) Analyses code security (not SharePoint-specific) Checks memory leaks (SharePoint-specific) Combination of FxCop and SPDisposeCheck for SharePoint Online
  • 9. @mattein #SPCAF The Gap…  No tool to check all SharePoint specific Code  Analyze solution dependencies  Calculate SharePoint metrics  Show what’s inside the solution / app!
  • 11. @mattein #SPCAF What is in it? Identifies coding violations against ~400 rules Visualizes dependencies between SharePoint elements Calculates metrics on SharePoint Code Creates content reports of packages
  • 12.
  • 13. @mattein #SPCAF SPCAF 4 Visual Studio • Run SPCAF manually or on solution build • Doubleclick results in Error List to open the line of code
  • 14. @mattein #SPCAF • Information • Warning • Error Configure Rulesets
  • 15. @mattein #SPCAF Continuous Integration Run SPCAF in TeamBuild as Quality Gate • Custom Build Activity • Supports TFS 2010/2012 and Team Foundation Service (Cloud) Build in TFS on-premises Build in Team Foundation Services
  • 16. @mattein #SPCAF Client Applications • SPCAF runs on Azure (WCF Service) • Available Clients: Windows 8 App Desktop Client (WPF) Web Client (Silverlight) SPCAF on Azure
  • 17.
  • 19.
  • 20. @mattein #SPCAF using SPCAF.Sdk; using SPCAF.Sdk.Rules; using SPCAF.Sdk.Model; using SPCAF.Sdk.Model.Extensions; 1. Create empty class library 2. Add SPCAF.SDK.dll assembly reference 3. Create class and add usings 4. Add method stub by inheriting from ”Rule” namespace SPSOslo.Rules { public class FeatureNameStartsWithSPSOslo : Rule<FeatureDefinition> { public override void Visit(FeatureDefinition target, NotificationCollection notifications) {} } }
  • 21. @mattein #SPCAF 5. Add Rule Metadata namespace SPSOslo.Rules { [RuleMetadata(typeof(Naming), CheckId = "SPC99001", DisplayName = "Feature name should start with SPSOslo", Description = "A feature name should be prefixed with 'SPSOslo'.", DefaultSeverity = Severity.Warning, SharePointVersion = new string[] { "12", "14", "15" }, Message = "Feature '{0}' should start with 'SPSOslo'.", Resolution = "Change the folder name of the feature and add the name at the beginning, e.g. 'SPSOslo.Intranet.Components_ContentTypesFeature'.")] public class FeatureNameStartsWithSPSOslo : Rule<FeatureDefinition> { ...
  • 22. @mattein #SPCAF 7. Build and drop the assembly into SPCAF installation folder public class FeatureNameStartsWithSPSOslo : Rule<FeatureDefinition> { public override void Visit(FeatureDefinition target, NotificationCollection notifications) { if (!target.FeatureName.StartsWith("SPSOslo")) { string message = string.Format(this.MessageTemplate(), target.FeatureName); Notify(target, message, notifications); } } } 6. Implement the rule
  • 23. @mattein #SPCAF SharePoint Code Analysis • is important for EVERYBODY  • improves solution quality • improves farm stability SPCAF • fills the tooling gap • runs locally and in the cloud • integrates in the ALM process • is extensible
  • 24. @mattein #SPCAF Where do I get it? Matthias Einig @mattein www.matthiaseinig.de Follow us! The SharePoint Code Quality Team Torsten Mandelkow @tmandelkow blogs.msdn.com/b/torstenmandelkow SPCAF @spcaf www.spcaf.com