Skip to content
Mayank1226 edited this page Dec 9, 2023 · 1 revision

Welcome to the CodeInspector wiki!

CodeInspector

Introduction

Welcome to CodeInspector, a collaborative code analysis platform and an innovative application designed to facilitate seamless interaction between instructors and students in the realm of C# programming. This platform empowers instructors to host sessions, allowing students to submit their C# code in the form of DLL files for analysis. This project is done as part of IIT Palakkad's CS5617 (Sortware Engineering) course for the year of 2023 under the guidance of Prof. Ramaswamy Krishnan Chittur

Project Goals

The goal of the project is to develop a fully functional code analyzer application. To achieve this, multiple teams have been formed, each tasked with creating a specific module core to the project:

  • Networking Team
  • Content Team
  • Dashboard + UX Team
  • Analyzer Team
  • Cloud Team

The project manager oversees the above five teams.

The project is based on the Waterfall Model of the Software Development Lifecycle (SDLC). The project is developed in the following phases:

  • Writing detailed technical specifications.
  • Coding the individual modules.
  • Integrating modules.
  • Fine-tuning, testing, and finalisation of code.

Key Features

  • Dual Session Types: Instructors and students can engage in dedicated sessions, streamlining communication and collaboration.

  • Dynamic Analysis Options: Instructors can choose from a variety of analysis types to evaluate student code comprehensively.

  • Cloud Storage: All session data is securely stored on the cloud, providing accessibility and continuity across different sessions.

  • Customizable Analyzer Interface: Instructors have the flexibility to implement a tailored analyzer interface, adapting the platform to their specific needs.

  • Cross-Session Data Analysis: Professors can harness the power of aggregated data analysis, gaining insights across multiple sessions for a holistic view of student performance.

Functionalities provided by Analyzer Library

  • Abstract type no public constructor
  • Avoid constructor in static types
  • Avoid unused private fields
  • Avoid empty interface
  • Depth of inheritance should be less than 3
  • Array field should not be read only
  • Disposable field should be disposed
  • Avoid unused local variables
  • Abstract class naming checker
  • Casing Checker
  • Cyclomatic Complexity
  • New Line Literal Rule
  • Prefix checker
  • Switch Statement default case checker
  • Avoid goto statements
  • Avoid visible instance fields
  • High parameter count rule

Fuctionalities provided by Cloud Analyzer

  • Collecting data from all sessions for each student
  • Collecting submission data from a specific session for a student
  • Obtaining the analysis result for a specific session for a certain student
  • Providing insights from the analysis results

Workflows + Guidelines

GitHub is used for version control and development.

The Hierarchy is as follows:

Project_Hierarchy

  • The main repository is maintained by the Project Manager.

  • The Team Leads fork the repository of the project manager.

  • The Team Members fork the repository of their respective team leads.

Team Members

  • Fork the repository of their respective team leads.
  • Work on the tasks assigned to them by their respective team leads.
  • Make pull requests to their lead's repository.
  • Perform unit testing before making PRs.

Team Leads

  • Fork the project manager's repository.
  • Work on their respective modules and assign tasks to their respective team members
  • Review code before accepting PRs from their respective team members.
  • Make pull requests to the project manager's repository.
  • Perform regression testing before making PRs.

Leadership

  • Review code before accepting PRs from fellow team leads (and making final decisions).
  • Perform end-to-end testing.

Guidelines + Useful Links

Some useful links for coding conventions, best practises, etc: