JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.
Chapter 22. How to Resolve Issues
This section summarizes issues and how they can be resolved.
Contents
Search
1. Motivation for Code Quality
2. Getting Started
3. Licensing
3.1. Getting an Activation Code or a License
3.2. Activation Code Based Licensing
3.3. Proxy Settings
3.4. License Server Settings
4. Initial Configuration
4.1. Installation and Updates
4.2. Help
4.3. Editor Preferences
4.4. License Server Preferences
4.5. Proxy Preferences
4.6. Update Site Preferences
4.7. C/C++ Compiler Definitions
4.8. Search Path Configuration
4.9. C/C++ Parser Daemon Configurations
4.10. C# Configuration
4.11. Python Configuration
5. Getting Familiar with the Sonargraph System Model
5.1. Physical File Structure
5.2. Language Independent Model
5.3. Language Specific Models
5.3.1. Java/Kotlin Model
5.3.2. Kotlin Specific Issues
5.3.3. C++ Model
5.3.4. C# Model
5.3.5. Python Model
5.4. Logical Models
5.4.1. System-Based Logical Model
5.4.2. Module-Based Logical Model
6. Creating a System
6.1. Creating a Java System
6.2. Creating a C# System
6.3. Creating C/C++ Systems
6.4. Quality Model
6.4.1. Importing a Quality Model
6.4.2. Exporting a Quality Model
7. Adding Content to a System
7.1. Creating or Importing a Java Module
7.1.1. Importing Java Modules Using an Eclipse Workspace
7.1.2. Import Modules using the Sonargraph Gradle Plugin
7.1.3. Import Modules using the Sonargraph Maven Plugin
7.1.4. Importing Java Modules Using a Bazel Workspace
7.1.5. Import Modules Using the Build Unit(s) Importer
7.1.6. Creating a Java Module Manually
7.2. Creating or Importing a C++ Module
7.2.1. Importing C++ Modules from Visual Studio Files
7.2.2. Importing C++ Modules Via CMake or CCSpy
7.2.3. Creating a C++ Module Manually
7.2.4. C/C++ Module Configuration
7.3. Creating or Importing a C# Module
7.3.1. Importing C# Modules Using a Visual Studio Solution File
8. Interacting with a System
8.1. User Interface Components
8.1.1. Menu Bar
8.1.2. Tool Bar
8.1.3. Notifications Bar
8.1.4. Tables
8.2. Common Interaction Patterns
8.2.1. Special Graphic Elements Decorations
8.3. Sonargraph Workbench
8.3.1. Auxiliary Views
8.4. Getting a Quick Impression
8.5. Navigating through the System Components
8.6. Exploring the System Namespaces
8.7. Managing the System Files
8.8. Managing the Workspace
8.8.1. Definition of Filters, Modules and Root Directories
8.8.2. Managing Module Dependencies
8.8.3. Creating Workspace Profiles for Build Environments
8.9. Analyzer Execution Level
8.10. Analyzing Cycles
8.10.1. Revising Cycle Groups
8.10.2. Inspecting Cyclic Elements
8.10.3. Breaking Up Cycles
8.11. Exploring the System
8.11.1. Exploration View
8.11.1.1. Presentation Modes, Levelization, Semantics of Icons and Decorators
8.11.1.2. Focus
8.11.1.3. Interaction with Auxiliary Views
8.11.2. Graph View
8.11.2.1. Focus
8.11.2.2. Levels
8.11.2.3. On Demand Cycle Groups
8.11.2.4. Interaction with Auxiliary Views
8.11.2.5. Context Menu Interactions
8.11.2.6. Type Based Graph
8.11.2.7. View Options
8.11.3. Treemap-Based System Exploration
8.11.3.1. Tabular Representation of Treemap Data
8.11.4. Tabular System Exploration
8.11.4.1. Drilldown
8.11.4.2. Interaction with Auxiliary Views
8.11.4.3. Context Menu Interactions
8.12. Searching Elements
8.12.1. Searching Elements in Views
8.13. Detecting Duplicate Code
8.13.1. Configuration of Duplicate Code Blocks Computation
8.14. Examining the Source Code
8.14.1. Interaction with Auxiliary Views
8.15. Examining Metrics Results
8.16. Analyzing C++ Include Dependencies
8.17. Creating a Report
9. Handling Detected Issues
9.1. Using Virtual Models for Resolutions
9.2. Examining Issues
9.2.1. Identifying the Most Relevant Issues to Fix
9.2.2. Identifying Issue Hotspots
9.3. Ignoring Issues
9.4. Defining Fix and TODO Tasks
9.5. Editing Resolutions
9.6. Details about Sonargraph's Resolution Matching
10. Simulating Refactorings
10.1. Creating Delete Refactorings
10.2. Creating Move/Rename Refactorings
10.3. Managing Refactorings
10.4. Best Practices
11. Defining an Architecture
11.1. Models, Components and Artifacts
11.1.1. Using other criteria to assign components to artifacts
11.1.2. List of predefined attribute retrievers
11.2. Interfaces and Connectors
11.3. Reusing Architecture Aspects
11.4. Extending Aspect Based Artifacts
11.5. Extending Interfaces or Connectors
11.6. Adding Transitive or Deprecated Connections
11.7. Restricting Dependency Types
11.8. Connecting Complex Artifacts
11.9. Introducing Connection Schemes
11.10. Artifact Classes
11.11. How to Organize your Code
11.12. Designing Generic Architectures Using Templates
11.12.1. Using unrestricted generated artifacts
11.12.2. Using connection schemes to regulate accessibility
11.13. Best Practices
11.14. Architecture DSL Language Specification
12. Visualizing Architecture Aspects
13. Interactive Restructuring and Code Organization
13.1. Assigning Elements to Artifacts
14. Examining Changes
15. Defining Quality Gates
15.1. Creating Quality Gates
15.2. Using Quality Gates in the Continuous Integration (CI) Build
15.3. Current Quality Gate Limitations
16. Extending the Static Analysis
16.1. Interaction with Auxiliary Views
16.2. Groovy Scripts from Quality Model
16.3. Creating a new Groovy Script
16.3.1. Default Parameters in a Script
16.3.2. Adding Parameters
16.3.3. Creating Run Configurations
16.4. Editing a Groovy Script
16.4.1. Auto Completion
16.4.2. Compiling a Groovy Script
16.5. Producing Results with Groovy Scripts
16.6. Running a Groovy Script Automatically
16.7. Managing Groovy Scripts
16.8. Groovy Script Best Practices
16.8.1. Only Visit What is Needed
16.8.2. Find Text in Code
17. Using Additional Plugins
17.1. Plugin Configuration
17.2. Spring Microservices Plugin
17.3. Swagger Plugin
17.4. SpotBugs Plugin
17.5. PMD Plugin
17.6. Issues Importer Plugin
18. Investigating Microservice Dependencies
19. Build Server Integration
20. IDE Integration
20.1. Eclipse Plugin
20.1.1. Assigning a System
20.1.2. Displaying Issues and Tasks
20.1.3. Suspending / Resuming Quality Monitoring
20.1.4. Setting Analyzer Execution Level
20.1.5. Getting Back In Sync with Manual Refresh
20.1.6. Examining Changes
20.1.7. Execute Refactorings in Eclipse
20.2. IntelliJ Plugin
20.2.1. Assigning a System
20.2.2. Displaying Issues and Tasks
20.2.3. Toolbar
20.2.4. Getting Back In Sync with Manual Refresh
20.2.5. Examining Changes
20.2.6. Execute Refactorings in IntelliJ
20.3. Collaboration between Sonargraph and IDE
21. Metric Definitions
21.1. Language Independent Metrics
21.2. Java Metrics
21.3. C# Metrics
21.4. C,C++ Metrics
21.5. Python Metrics
22. How to Resolve Issues
22.1. Language Independent Issues
22.1.1. Root path does not exist
22.1.2. Duplicate Code
22.2. Java Specific Issues
22.2.1. Class file is out-of-date
22.3. C# Specific Issues
22.3.1. C# Parsing Errors
22.3.2. Project File (.csproj) Processing Failed
22.4. C/C++ Specific Issues
22.4.1. C/C++ Parsing Errors
23. FAQ
23.1. Out Of Memory Exceptions
23.2. Groovy Template
23.3. MSBuild Error (MSB4019) during Analysis of Visual Studio C# Project
24. References
25. Trademark Attributions, Library License Texts, and Source Code
26. Legal Notice
Glossary
1. Walk Through Tutorial (Java)
1.1. Workspace Definition
1.2. Basic Analysis
1.3. Advanced Analysis
1.4. Architecture: Artifacts, Aspects Files and Standard Connections
1.5. Architecture: Explicit Interfaces and Connectors
1.6. Architecture: Advanced Connections
1.7. Architecture: Advanced Aspect Files
1.8. Architecture: Referencing external Artifacts in Aspect Files
1.9. Headless Check with Sonargraph-Build
1.10. Check at Development Time with Sonargraph Eclipse Integration
2. Tutorial - Java
2.1. Setup the Software System
2.1.1. Create a new Software System
2.1.2. Define the Workspace
2.1.3. Define Module Dependencies
2.1.4. Parse the Workspace
2.2. Initial Analysis
2.2.1. Detect Problems Using Standard Metrics
2.2.2. Adjust Metric Thresholds
2.3. Problem Analysis
2.3.1. Examine Cycles
2.3.2. Examine Duplicate Code
2.3.3. Handle Issues
2.4. Detailed Dependency Analysis
2.4.1. Explore Dependencies
2.4.2. Check how Elements are Connected via Graph View
2.4.3. Check how Elements are Connected via the Dependencies View
2.4.4. Search for Elements
2.5. Advanced Analysis With Scripts
2.5.1. Create a New Script
2.5.2. Execute Existing Script
2.6. Share Results
2.6.1. Work with Snapshots
2.6.2. Define Quality Standards using Quality Models
2.6.3. Export to Excel
3. Tutorial - C#
3.1. Setup the Software System
3.2. Further Steps
4. Tutorial - C++
4.1. Setup the Software System - Compiler Definitions
4.2. Setup the Software System - Capture Compile Commands with ccspy
4.3. Setup the Software System - Visual Studio Import
4.4. Further Steps
5. Sonargraph Script API Documentation
Index
Search
Search Highlighter (On/Off)