SpotBugs Report

Project Information

Project: project-pulse

SpotBugs version: 4.10.5

Code analyzed:



Metrics

8666 lines of code analyzed, in 283 classes, in 52 packages.

Metric Total Density*
High Priority Warnings 0.00
Medium Priority Warnings 237 27.35
Total Warnings 237 27.35

(* Defects per Thousand lines of non-commenting source statements)



Contents

Summary

Warning Type Number
Bad practice Warnings 3
Malicious code vulnerability Warnings 219
Dodgy code Warnings 15
Total 237

Warnings

Click on a warning row to see full context information.

Bad practice Warnings

Code Warning
CT Exception thrown in class team.projectpulse.evaluation.Rating at new team.projectpulse.evaluation.Rating(Integer, Criterion, Double) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks.
CT Exception thrown in class team.projectpulse.evaluation.Rating at new team.projectpulse.evaluation.Rating(Criterion, Double) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks.
CT Exception thrown in class team.projectpulse.security.SecurityConfiguration at new team.projectpulse.security.SecurityConfiguration(CustomBasicAuthenticationEntryPoint, CustomBearerTokenAuthenticationEntryPoint, CustomBearerTokenAccessDeniedHandler, UserOwnershipAuthorizationManager, CourseOwnershipAuthorizationManager, CourseMembershipAuthorizationManager, CriterionOwnershipAuthorizationManager, RubricOwnershipAuthorizationManager, CriterionMembershipAuthorizationManager, RubricMembershipAuthorizationManager, AssignCriterionToRubricAuthorizationManager, SectionMembershipAuthorizationManager, SectionOwnershipAuthorizationManager, AssignRubricToSectionAuthorizationManager, AssignInstructorToSectionAuthorizationManager, TeamMembershipAuthorizationManager, TeamOwnershipAuthorizationManager, AssignStudentToTeamAuthorizationManager, AssignInstructorToTeamAuthorizationManager, TransferTeamAuthorizationManager, ActivityOwnershipAuthorizationManager, ActivityMembershipAuthorizationManager, EvaluationOwnershipAuthorizationManager, SectionInstructorAuthorizationManager, StudentInstructorAuthorizationManager) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks.

Malicious code vulnerability Warnings

Code Warning
EI team.projectpulse.activity.Activity.getStudent() may expose internal representation by returning Activity.student
EI team.projectpulse.activity.Activity.getTeam() may expose internal representation by returning Activity.team
EI team.projectpulse.course.Course.getCourseAdmin() may expose internal representation by returning Course.courseAdmin
EI team.projectpulse.course.Course.getCriteria() may expose internal representation by returning Course.criteria
EI team.projectpulse.course.Course.getInstructors() may expose internal representation by returning Course.instructors
EI team.projectpulse.course.Course.getRubrics() may expose internal representation by returning Course.rubrics
EI team.projectpulse.course.Course.getSections() may expose internal representation by returning Course.sections
EI team.projectpulse.evaluation.PeerEvaluation.getEvaluatee() may expose internal representation by returning PeerEvaluation.evaluatee
EI team.projectpulse.evaluation.PeerEvaluation.getEvaluator() may expose internal representation by returning PeerEvaluation.evaluator
EI team.projectpulse.evaluation.PeerEvaluation.getRatings() may expose internal representation by returning PeerEvaluation.ratings
EI team.projectpulse.evaluation.PeerEvaluationAverage.getPrivateComments() may expose internal representation by returning PeerEvaluationAverage.privateComments
EI team.projectpulse.evaluation.PeerEvaluationAverage.getPublicComments() may expose internal representation by returning PeerEvaluationAverage.publicComments
EI team.projectpulse.evaluation.PeerEvaluationAverage.getRatingAverages() may expose internal representation by returning PeerEvaluationAverage.ratingAverages
EI team.projectpulse.evaluation.Rating.getCriterion() may expose internal representation by returning Rating.criterion
EI team.projectpulse.evaluation.Rating.getPeerEvaluation() may expose internal representation by returning Rating.peerEvaluation
EI team.projectpulse.evaluation.WeeklyPeerEvaluationReport.getPeerEvaluationAverages() may expose internal representation by returning WeeklyPeerEvaluationReport.peerEvaluationAverages
EI team.projectpulse.evaluation.dto.PeerEvaluationDto.ratings() may expose internal representation by returning PeerEvaluationDto.ratings
EI team.projectpulse.instructor.Instructor.getCourses() may expose internal representation by returning Instructor.courses
EI team.projectpulse.instructor.Instructor.getDefaultCourse() may expose internal representation by returning Instructor.defaultCourse
EI team.projectpulse.instructor.Instructor.getDefaultSection() may expose internal representation by returning Instructor.defaultSection
EI team.projectpulse.instructor.Instructor.getSections() may expose internal representation by returning Instructor.sections
EI team.projectpulse.instructor.Instructor.getTeams() may expose internal representation by returning Instructor.teams
EI team.projectpulse.notification.ReminderService$ReminderResult.failed() may expose internal representation by returning ReminderService$ReminderResult.failed
EI team.projectpulse.notification.dto.OwingTeamDto.students() may expose internal representation by returning OwingTeamDto.students
EI team.projectpulse.notification.dto.ReminderResultDto.failed() may expose internal representation by returning ReminderResultDto.failed
EI team.projectpulse.notification.dto.SubmissionStatusDto.teams() may expose internal representation by returning SubmissionStatusDto.teams
EI team.projectpulse.ram.collaboration.Comment.getAuthor() may expose internal representation by returning Comment.author
EI team.projectpulse.ram.collaboration.Comment.getCommentThread() may expose internal representation by returning Comment.commentThread
EI team.projectpulse.ram.collaboration.CommentThread.getArtifact() may expose internal representation by returning CommentThread.artifact
EI team.projectpulse.ram.collaboration.CommentThread.getComments() may expose internal representation by returning CommentThread.comments
EI team.projectpulse.ram.collaboration.CommentThread.getCreatedBy() may expose internal representation by returning CommentThread.createdBy
EI team.projectpulse.ram.collaboration.CommentThread.getDocument() may expose internal representation by returning CommentThread.document
EI team.projectpulse.ram.collaboration.CommentThread.getDocumentSection() may expose internal representation by returning CommentThread.documentSection
EI team.projectpulse.ram.collaboration.CommentThread.getTeam() may expose internal representation by returning CommentThread.team
EI team.projectpulse.ram.collaboration.CommentThread.getUpdatedBy() may expose internal representation by returning CommentThread.updatedBy
EI team.projectpulse.ram.collaboration.dto.CommentThreadDto.comments() may expose internal representation by returning CommentThreadDto.comments
EI team.projectpulse.ram.document.DocumentSection.getCommentThreads() may expose internal representation by returning DocumentSection.commentThreads
EI team.projectpulse.ram.document.DocumentSection.getCreatedBy() may expose internal representation by returning DocumentSection.createdBy
EI team.projectpulse.ram.document.DocumentSection.getDocument() may expose internal representation by returning DocumentSection.document
EI team.projectpulse.ram.document.DocumentSection.getLock() may expose internal representation by returning DocumentSection.lock
EI team.projectpulse.ram.document.DocumentSection.getRequirementArtifacts() may expose internal representation by returning DocumentSection.requirementArtifacts
EI team.projectpulse.ram.document.DocumentSection.getUpdatedBy() may expose internal representation by returning DocumentSection.updatedBy
EI team.projectpulse.ram.document.DocumentSectionLock.getDocumentSection() may expose internal representation by returning DocumentSectionLock.documentSection
EI team.projectpulse.ram.document.DocumentSectionLock.getLockedBy() may expose internal representation by returning DocumentSectionLock.lockedBy
EI team.projectpulse.ram.document.RequirementDocument.getCommentThreads() may expose internal representation by returning RequirementDocument.commentThreads
EI team.projectpulse.ram.document.RequirementDocument.getSections() may expose internal representation by returning RequirementDocument.sections
EI team.projectpulse.ram.document.RequirementDocument.getTeam() may expose internal representation by returning RequirementDocument.team
EI team.projectpulse.ram.document.dto.DocumentSectionDto.requirementArtifacts() may expose internal representation by returning DocumentSectionDto.requirementArtifacts
EI team.projectpulse.ram.document.dto.RequirementDocumentDto.sections() may expose internal representation by returning RequirementDocumentDto.sections
EI team.projectpulse.ram.document.template.DocumentTemplate.getSections() may expose internal representation by returning DocumentTemplate.sections
EI team.projectpulse.ram.requirement.ArtifactKeySequence.getTeam() may expose internal representation by returning ArtifactKeySequence.team
EI team.projectpulse.ram.requirement.ArtifactLink.getCreatedBy() may expose internal representation by returning ArtifactLink.createdBy
EI team.projectpulse.ram.requirement.ArtifactLink.getSourceArtifact() may expose internal representation by returning ArtifactLink.sourceArtifact
EI team.projectpulse.ram.requirement.ArtifactLink.getTargetArtifact() may expose internal representation by returning ArtifactLink.targetArtifact
EI team.projectpulse.ram.requirement.ArtifactLink.getTeam() may expose internal representation by returning ArtifactLink.team
EI team.projectpulse.ram.requirement.ArtifactLink.getUpdatedBy() may expose internal representation by returning ArtifactLink.updatedBy
EI team.projectpulse.ram.requirement.RequirementArtifact.getCommentThreads() may expose internal representation by returning RequirementArtifact.commentThreads
EI team.projectpulse.ram.requirement.RequirementArtifact.getCreatedBy() may expose internal representation by returning RequirementArtifact.createdBy
EI team.projectpulse.ram.requirement.RequirementArtifact.getIncomingArtifactLinks() may expose internal representation by returning RequirementArtifact.incomingArtifactLinks
EI team.projectpulse.ram.requirement.RequirementArtifact.getOutgoingArtifactLinks() may expose internal representation by returning RequirementArtifact.outgoingArtifactLinks
EI team.projectpulse.ram.requirement.RequirementArtifact.getSourceDocumentSection() may expose internal representation by returning RequirementArtifact.sourceDocumentSection
EI team.projectpulse.ram.requirement.RequirementArtifact.getTeam() may expose internal representation by returning RequirementArtifact.team
EI team.projectpulse.ram.requirement.RequirementArtifact.getUpdatedBy() may expose internal representation by returning RequirementArtifact.updatedBy
EI team.projectpulse.ram.requirement.dto.ArtifactTraceability.incoming() may expose internal representation by returning ArtifactTraceability.incoming
EI team.projectpulse.ram.requirement.dto.ArtifactTraceability.outgoing() may expose internal representation by returning ArtifactTraceability.outgoing
EI team.projectpulse.ram.usecase.UseCase.getArtifact() may expose internal representation by returning UseCase.artifact
EI team.projectpulse.ram.usecase.UseCase.getLock() may expose internal representation by returning UseCase.lock
EI team.projectpulse.ram.usecase.UseCase.getMainSteps() may expose internal representation by returning UseCase.mainSteps
EI team.projectpulse.ram.usecase.UseCase.getPostconditions() may expose internal representation by returning UseCase.postconditions
EI team.projectpulse.ram.usecase.UseCase.getPreconditions() may expose internal representation by returning UseCase.preconditions
EI team.projectpulse.ram.usecase.UseCase.getPrimaryActor() may expose internal representation by returning UseCase.primaryActor
EI team.projectpulse.ram.usecase.UseCase.getSecondaryActors() may expose internal representation by returning UseCase.secondaryActors
EI team.projectpulse.ram.usecase.UseCaseExtension.getBaseStep() may expose internal representation by returning UseCaseExtension.baseStep
EI team.projectpulse.ram.usecase.UseCaseExtension.getSteps() may expose internal representation by returning UseCaseExtension.steps
EI team.projectpulse.ram.usecase.UseCaseExtensionStep.getExtension() may expose internal representation by returning UseCaseExtensionStep.extension
EI team.projectpulse.ram.usecase.UseCaseLock.getLockedBy() may expose internal representation by returning UseCaseLock.lockedBy
EI team.projectpulse.ram.usecase.UseCaseLock.getUseCase() may expose internal representation by returning UseCaseLock.useCase
EI team.projectpulse.ram.usecase.UseCaseMainStep.getExtensions() may expose internal representation by returning UseCaseMainStep.extensions
EI team.projectpulse.ram.usecase.UseCaseMainStep.getUseCase() may expose internal representation by returning UseCaseMainStep.useCase
EI team.projectpulse.ram.usecase.dto.UseCaseDto.mainSteps() may expose internal representation by returning UseCaseDto.mainSteps
EI team.projectpulse.ram.usecase.dto.UseCaseDto.postconditions() may expose internal representation by returning UseCaseDto.postconditions
EI team.projectpulse.ram.usecase.dto.UseCaseDto.preconditions() may expose internal representation by returning UseCaseDto.preconditions
EI team.projectpulse.ram.usecase.dto.UseCaseDto.secondaryActorIds() may expose internal representation by returning UseCaseDto.secondaryActorIds
EI team.projectpulse.ram.usecase.dto.UseCaseExtensionDto.steps() may expose internal representation by returning UseCaseExtensionDto.steps
EI team.projectpulse.ram.usecase.dto.UseCaseMainStepDto.extensions() may expose internal representation by returning UseCaseMainStepDto.extensions
EI team.projectpulse.rubric.Criterion.getCourse() may expose internal representation by returning Criterion.course
EI team.projectpulse.rubric.Rubric.getCourse() may expose internal representation by returning Rubric.course
EI team.projectpulse.rubric.Rubric.getCriteria() may expose internal representation by returning Rubric.criteria
EI team.projectpulse.rubric.dto.RubricDto.criteria() may expose internal representation by returning RubricDto.criteria
EI team.projectpulse.section.Section.getActiveWeeks() may expose internal representation by returning Section.activeWeeks
EI team.projectpulse.section.Section.getCourse() may expose internal representation by returning Section.course
EI team.projectpulse.section.Section.getInstructors() may expose internal representation by returning Section.instructors
EI team.projectpulse.section.Section.getRubric() may expose internal representation by returning Section.rubric
EI team.projectpulse.section.Section.getStudents() may expose internal representation by returning Section.students
EI team.projectpulse.section.Section.getTeams() may expose internal representation by returning Section.teams
EI team.projectpulse.section.dto.SectionDto.activeWeeks() may expose internal representation by returning SectionDto.activeWeeks
EI team.projectpulse.student.Student.getSection() may expose internal representation by returning Student.section
EI team.projectpulse.student.Student.getTeam() may expose internal representation by returning Student.team
EI team.projectpulse.team.Team.getInstructor() may expose internal representation by returning Team.instructor
EI team.projectpulse.team.Team.getSection() may expose internal representation by returning Team.section
EI team.projectpulse.team.Team.getStudents() may expose internal representation by returning Team.students
EI team.projectpulse.user.MyUserPrincipal.getPeerEvaluationUser() may expose internal representation by returning MyUserPrincipal.peerEvaluationUser
EI2 new team.projectpulse.activity.Activity(Student, String, Team, ActivityCategory, String, String, Double, Double, ActivityStatus) may expose internal representation by storing an externally mutable object into Activity.student
EI2 new team.projectpulse.activity.Activity(Student, String, Team, ActivityCategory, String, String, Double, Double, ActivityStatus) may expose internal representation by storing an externally mutable object into Activity.team
EI2 team.projectpulse.activity.Activity.setStudent(Student) may expose internal representation by storing an externally mutable object into Activity.student
EI2 team.projectpulse.activity.Activity.setTeam(Team) may expose internal representation by storing an externally mutable object into Activity.team
EI2 new team.projectpulse.activity.ActivityController(ActivityService, ActivityToActivityDtoConverter, ActivityDtoToActivityConverter) may expose internal representation by storing an externally mutable object into ActivityController.activityService
EI2 team.projectpulse.course.Course.setCourseAdmin(Instructor) may expose internal representation by storing an externally mutable object into Course.courseAdmin
EI2 new team.projectpulse.course.CourseController(CourseService, CourseDtoToCourseConverter, CourseToCourseDtoConverter) may expose internal representation by storing an externally mutable object into CourseController.courseService
EI2 new team.projectpulse.evaluation.EvaluationController(EvaluationService, PeerEvaluationToPeerEvaluationDtoConverter, PeerEvaluationDtoToPeerEvaluationConverter) may expose internal representation by storing an externally mutable object into EvaluationController.evaluationService
EI2 new team.projectpulse.evaluation.PeerEvaluation(String, Student, Student, List, String, String) may expose internal representation by storing an externally mutable object into PeerEvaluation.evaluatee
EI2 new team.projectpulse.evaluation.PeerEvaluation(String, Student, Student, List, String, String) may expose internal representation by storing an externally mutable object into PeerEvaluation.evaluator
EI2 team.projectpulse.evaluation.PeerEvaluation.setEvaluatee(Student) may expose internal representation by storing an externally mutable object into PeerEvaluation.evaluatee
EI2 team.projectpulse.evaluation.PeerEvaluation.setEvaluator(Student) may expose internal representation by storing an externally mutable object into PeerEvaluation.evaluator
EI2 team.projectpulse.evaluation.PeerEvaluation.setRatings(List) may expose internal representation by storing an externally mutable object into PeerEvaluation.ratings
EI2 team.projectpulse.evaluation.PeerEvaluationAverage.setPrivateComments(List) may expose internal representation by storing an externally mutable object into PeerEvaluationAverage.privateComments
EI2 team.projectpulse.evaluation.PeerEvaluationAverage.setPublicComments(List) may expose internal representation by storing an externally mutable object into PeerEvaluationAverage.publicComments
EI2 team.projectpulse.evaluation.PeerEvaluationAverage.setRatingAverages(List) may expose internal representation by storing an externally mutable object into PeerEvaluationAverage.ratingAverages
EI2 new team.projectpulse.evaluation.Rating(Integer, Criterion, Double) may expose internal representation by storing an externally mutable object into Rating.criterion
EI2 new team.projectpulse.evaluation.Rating(Criterion, Double) may expose internal representation by storing an externally mutable object into Rating.criterion
EI2 team.projectpulse.evaluation.Rating.setCriterion(Criterion) may expose internal representation by storing an externally mutable object into Rating.criterion
EI2 team.projectpulse.evaluation.Rating.setPeerEvaluation(PeerEvaluation) may expose internal representation by storing an externally mutable object into Rating.peerEvaluation
EI2 team.projectpulse.evaluation.WeeklyPeerEvaluationReport.setPeerEvaluationAverages(List) may expose internal representation by storing an externally mutable object into WeeklyPeerEvaluationReport.peerEvaluationAverages
EI2 new team.projectpulse.evaluation.dto.PeerEvaluationDto(Integer, String, Integer, String, Integer, String, List, Double, String, String, LocalDateTime, LocalDateTime) may expose internal representation by storing an externally mutable object into PeerEvaluationDto.ratings
EI2 team.projectpulse.instructor.Instructor.setCourses(Set) may expose internal representation by storing an externally mutable object into Instructor.courses
EI2 team.projectpulse.instructor.Instructor.setDefaultCourse(Course) may expose internal representation by storing an externally mutable object into Instructor.defaultCourse
EI2 team.projectpulse.instructor.Instructor.setDefaultSection(Section) may expose internal representation by storing an externally mutable object into Instructor.defaultSection
EI2 team.projectpulse.instructor.Instructor.setSections(Set) may expose internal representation by storing an externally mutable object into Instructor.sections
EI2 team.projectpulse.instructor.Instructor.setTeams(List) may expose internal representation by storing an externally mutable object into Instructor.teams
EI2 new team.projectpulse.instructor.InstructorController(InstructorService, InstructorRegistrationRequestToInstructorConverter, InstructorToInstructorDtoConverter, InstructorDtoToInstructorConverter) may expose internal representation by storing an externally mutable object into InstructorController.instructorService
EI2 new team.projectpulse.instructor.InstructorService(InstructorRepository, UserInvitationService, PasswordEncoder, SectionRepository, CourseRepository, UserUtils) may expose internal representation by storing an externally mutable object into InstructorService.userInvitationService
EI2 new team.projectpulse.notification.ReminderController(SubmissionStatusService, ReminderService, SectionService, StudentToOwingStudentDtoConverter, Clock) may expose internal representation by storing an externally mutable object into ReminderController.sectionService
EI2 new team.projectpulse.notification.ReminderService$ReminderResult(int, List) may expose internal representation by storing an externally mutable object into ReminderService$ReminderResult.failed
EI2 new team.projectpulse.notification.SubmissionStatusService(StudentRepository, ActivityService, EvaluationService) may expose internal representation by storing an externally mutable object into SubmissionStatusService.activityService
EI2 new team.projectpulse.notification.SubmissionStatusService(StudentRepository, ActivityService, EvaluationService) may expose internal representation by storing an externally mutable object into SubmissionStatusService.evaluationService
EI2 new team.projectpulse.notification.WeeklyReminderScheduler(SectionService, SubmissionStatusService, ReminderService, Clock, boolean) may expose internal representation by storing an externally mutable object into WeeklyReminderScheduler.sectionService
EI2 new team.projectpulse.notification.dto.OwingTeamDto(Integer, String, List) may expose internal representation by storing an externally mutable object into OwingTeamDto.students
EI2 new team.projectpulse.notification.dto.ReminderResultDto(SubmittableItem, String, int, List) may expose internal representation by storing an externally mutable object into ReminderResultDto.failed
EI2 new team.projectpulse.notification.dto.SubmissionStatusDto(SubmittableItem, String, String, boolean, DayOfWeek, LocalTime, List) may expose internal representation by storing an externally mutable object into SubmissionStatusDto.teams
EI2 team.projectpulse.ram.collaboration.Comment.setAuthor(PeerEvaluationUser) may expose internal representation by storing an externally mutable object into Comment.author
EI2 team.projectpulse.ram.collaboration.Comment.setCommentThread(CommentThread) may expose internal representation by storing an externally mutable object into Comment.commentThread
EI2 new team.projectpulse.ram.collaboration.CommentController(CommentService, CommentThreadToCommentThreadDtoConverter, CommentThreadDtoToCommentThreadConverter, CommentToCommentDtoConverter) may expose internal representation by storing an externally mutable object into CommentController.commentService
EI2 team.projectpulse.ram.collaboration.CommentThread.setArtifact(RequirementArtifact) may expose internal representation by storing an externally mutable object into CommentThread.artifact
EI2 team.projectpulse.ram.collaboration.CommentThread.setComments(List) may expose internal representation by storing an externally mutable object into CommentThread.comments
EI2 team.projectpulse.ram.collaboration.CommentThread.setCreatedBy(PeerEvaluationUser) may expose internal representation by storing an externally mutable object into CommentThread.createdBy
EI2 team.projectpulse.ram.collaboration.CommentThread.setDocument(RequirementDocument) may expose internal representation by storing an externally mutable object into CommentThread.document
EI2 team.projectpulse.ram.collaboration.CommentThread.setDocumentSection(DocumentSection) may expose internal representation by storing an externally mutable object into CommentThread.documentSection
EI2 team.projectpulse.ram.collaboration.CommentThread.setTeam(Team) may expose internal representation by storing an externally mutable object into CommentThread.team
EI2 new team.projectpulse.ram.collaboration.dto.CommentThreadDto(Long, CommentThreadStatus, Instant, PeerEvaluationUserDto, List) may expose internal representation by storing an externally mutable object into CommentThreadDto.comments
EI2 team.projectpulse.ram.document.DocumentSection.setCommentThreads(Set) may expose internal representation by storing an externally mutable object into DocumentSection.commentThreads
EI2 team.projectpulse.ram.document.DocumentSection.setDocument(RequirementDocument) may expose internal representation by storing an externally mutable object into DocumentSection.document
EI2 team.projectpulse.ram.document.DocumentSection.setRequirementArtifacts(List) may expose internal representation by storing an externally mutable object into DocumentSection.requirementArtifacts
EI2 team.projectpulse.ram.document.DocumentSectionLock.lock(PeerEvaluationUser, Instant, Instant, String) may expose internal representation by storing an externally mutable object into DocumentSectionLock.lockedBy
EI2 team.projectpulse.ram.document.DocumentSectionLock.setDocumentSection(DocumentSection) may expose internal representation by storing an externally mutable object into DocumentSectionLock.documentSection
EI2 team.projectpulse.ram.document.DocumentSectionLock.setLockedBy(PeerEvaluationUser) may expose internal representation by storing an externally mutable object into DocumentSectionLock.lockedBy
EI2 new team.projectpulse.ram.document.DocumentSectionService(DocumentSectionRepository, RequirementArtifactService, UserUtils, UserRepository, Duration) may expose internal representation by storing an externally mutable object into DocumentSectionService.requirementArtifactService
EI2 team.projectpulse.ram.document.RequirementDocument.setCommentThreads(Set) may expose internal representation by storing an externally mutable object into RequirementDocument.commentThreads
EI2 team.projectpulse.ram.document.RequirementDocument.setSections(List) may expose internal representation by storing an externally mutable object into RequirementDocument.sections
EI2 team.projectpulse.ram.document.RequirementDocument.setTeam(Team) may expose internal representation by storing an externally mutable object into RequirementDocument.team
EI2 new team.projectpulse.ram.document.dto.DocumentSectionDto(Long, String, SectionType, String, String, List, String, Instant, Instant, PeerEvaluationUserDto, PeerEvaluationUserDto, Integer, DocumentSectionLockDto) may expose internal representation by storing an externally mutable object into DocumentSectionDto.requirementArtifacts
EI2 new team.projectpulse.ram.document.dto.RequirementDocumentDto(Long, DocumentType, Integer, String, String, List, DocumentStatus, Integer) may expose internal representation by storing an externally mutable object into RequirementDocumentDto.sections
EI2 team.projectpulse.ram.document.template.DocumentTemplate.setSections(List) may expose internal representation by storing an externally mutable object into DocumentTemplate.sections
EI2 new team.projectpulse.ram.glossary.GlossaryService(RequirementArtifactRepository, RequirementArtifactService) may expose internal representation by storing an externally mutable object into GlossaryService.requirementArtifactService
EI2 new team.projectpulse.ram.requirement.ArtifactKeySequence(Team, RequirementArtifactType) may expose internal representation by storing an externally mutable object into ArtifactKeySequence.team
EI2 team.projectpulse.ram.requirement.ArtifactLink.setSourceArtifact(RequirementArtifact) may expose internal representation by storing an externally mutable object into ArtifactLink.sourceArtifact
EI2 team.projectpulse.ram.requirement.ArtifactLink.setTargetArtifact(RequirementArtifact) may expose internal representation by storing an externally mutable object into ArtifactLink.targetArtifact
EI2 team.projectpulse.ram.requirement.ArtifactLink.setTeam(Team) may expose internal representation by storing an externally mutable object into ArtifactLink.team
EI2 new team.projectpulse.ram.requirement.ArtifactLinkController(ArtifactLinkService, ArtifactLinkToArtifactLinkDtoConverter, ArtifactLinkToUpstreamLinkViewDtoConverter, ArtifactLinkToDownstreamLinkViewDtoConverter) may expose internal representation by storing an externally mutable object into ArtifactLinkController.artifactLinkService
EI2 new team.projectpulse.ram.requirement.RequirementArtifact(Team, RequirementArtifactType, String, String, String) may expose internal representation by storing an externally mutable object into RequirementArtifact.team
EI2 team.projectpulse.ram.requirement.RequirementArtifact.setCommentThreads(Set) may expose internal representation by storing an externally mutable object into RequirementArtifact.commentThreads
EI2 team.projectpulse.ram.requirement.RequirementArtifact.setIncomingArtifactLinks(Set) may expose internal representation by storing an externally mutable object into RequirementArtifact.incomingArtifactLinks
EI2 team.projectpulse.ram.requirement.RequirementArtifact.setOutgoingArtifactLinks(Set) may expose internal representation by storing an externally mutable object into RequirementArtifact.outgoingArtifactLinks
EI2 team.projectpulse.ram.requirement.RequirementArtifact.setSourceDocumentSection(DocumentSection) may expose internal representation by storing an externally mutable object into RequirementArtifact.sourceDocumentSection
EI2 team.projectpulse.ram.requirement.RequirementArtifact.setTeam(Team) may expose internal representation by storing an externally mutable object into RequirementArtifact.team
EI2 new team.projectpulse.ram.requirement.RequirementArtifactController(RequirementArtifactService, RequirementArtifactToRequirementArtifactDtoConverter, RequirementArtifactDtoToRequirementArtifactConverter) may expose internal representation by storing an externally mutable object into RequirementArtifactController.requirementArtifactService
EI2 new team.projectpulse.ram.requirement.dto.ArtifactTraceability(Long, List, List) may expose internal representation by storing an externally mutable object into ArtifactTraceability.incoming
EI2 new team.projectpulse.ram.requirement.dto.ArtifactTraceability(Long, List, List) may expose internal representation by storing an externally mutable object into ArtifactTraceability.outgoing
EI2 team.projectpulse.ram.usecase.UseCase.setArtifact(RequirementArtifact) may expose internal representation by storing an externally mutable object into UseCase.artifact
EI2 team.projectpulse.ram.usecase.UseCase.setMainSteps(List) may expose internal representation by storing an externally mutable object into UseCase.mainSteps
EI2 team.projectpulse.ram.usecase.UseCase.setPostconditions(Set) may expose internal representation by storing an externally mutable object into UseCase.postconditions
EI2 team.projectpulse.ram.usecase.UseCase.setPreconditions(Set) may expose internal representation by storing an externally mutable object into UseCase.preconditions
EI2 team.projectpulse.ram.usecase.UseCase.setPrimaryActor(RequirementArtifact) may expose internal representation by storing an externally mutable object into UseCase.primaryActor
EI2 team.projectpulse.ram.usecase.UseCase.setSecondaryActors(Set) may expose internal representation by storing an externally mutable object into UseCase.secondaryActors
EI2 team.projectpulse.ram.usecase.UseCaseExtension.setBaseStep(UseCaseMainStep) may expose internal representation by storing an externally mutable object into UseCaseExtension.baseStep
EI2 team.projectpulse.ram.usecase.UseCaseExtensionStep.setExtension(UseCaseExtension) may expose internal representation by storing an externally mutable object into UseCaseExtensionStep.extension
EI2 team.projectpulse.ram.usecase.UseCaseLock.lock(PeerEvaluationUser, Instant, Instant, String) may expose internal representation by storing an externally mutable object into UseCaseLock.lockedBy
EI2 team.projectpulse.ram.usecase.UseCaseLock.setUseCase(UseCase) may expose internal representation by storing an externally mutable object into UseCaseLock.useCase
EI2 team.projectpulse.ram.usecase.UseCaseMainStep.setUseCase(UseCase) may expose internal representation by storing an externally mutable object into UseCaseMainStep.useCase
EI2 new team.projectpulse.ram.usecase.UseCaseService(UseCaseRepository, RequirementArtifactService, UserUtils, UserRepository, Duration) may expose internal representation by storing an externally mutable object into UseCaseService.requirementArtifactService
EI2 new team.projectpulse.ram.usecase.dto.UseCaseDto(Long, String, String, String, Integer, Long, Set, String, Set, Set, List, Priority, String, Instant, Instant, PeerEvaluationUserDto, PeerEvaluationUserDto, Integer, UseCaseLockDto) may expose internal representation by storing an externally mutable object into UseCaseDto.mainSteps
EI2 new team.projectpulse.ram.usecase.dto.UseCaseDto(Long, String, String, String, Integer, Long, Set, String, Set, Set, List, Priority, String, Instant, Instant, PeerEvaluationUserDto, PeerEvaluationUserDto, Integer, UseCaseLockDto) may expose internal representation by storing an externally mutable object into UseCaseDto.postconditions
EI2 new team.projectpulse.ram.usecase.dto.UseCaseDto(Long, String, String, String, Integer, Long, Set, String, Set, Set, List, Priority, String, Instant, Instant, PeerEvaluationUserDto, PeerEvaluationUserDto, Integer, UseCaseLockDto) may expose internal representation by storing an externally mutable object into UseCaseDto.preconditions
EI2 new team.projectpulse.ram.usecase.dto.UseCaseDto(Long, String, String, String, Integer, Long, Set, String, Set, Set, List, Priority, String, Instant, Instant, PeerEvaluationUserDto, PeerEvaluationUserDto, Integer, UseCaseLockDto) may expose internal representation by storing an externally mutable object into UseCaseDto.secondaryActorIds
EI2 new team.projectpulse.ram.usecase.dto.UseCaseExtensionDto(Long, String, ExtensionKind, ExtensionExit, List) may expose internal representation by storing an externally mutable object into UseCaseExtensionDto.steps
EI2 new team.projectpulse.ram.usecase.dto.UseCaseMainStepDto(Long, String, String, List) may expose internal representation by storing an externally mutable object into UseCaseMainStepDto.extensions
EI2 team.projectpulse.rubric.Criterion.setCourse(Course) may expose internal representation by storing an externally mutable object into Criterion.course
EI2 new team.projectpulse.rubric.CriterionController(CriterionService, CriterionToCriterionDtoConverter, CriterionDtoToCriterionConverter) may expose internal representation by storing an externally mutable object into CriterionController.criterionService
EI2 team.projectpulse.rubric.Rubric.setCourse(Course) may expose internal representation by storing an externally mutable object into Rubric.course
EI2 new team.projectpulse.rubric.RubricController(RubricService, RubricToRubricDtoConverter, RubricDtoToRubricConverter) may expose internal representation by storing an externally mutable object into RubricController.rubricService
EI2 new team.projectpulse.rubric.dto.RubricDto(Integer, String, Set, Integer) may expose internal representation by storing an externally mutable object into RubricDto.criteria
EI2 team.projectpulse.section.Section.setActiveWeeks(List) may expose internal representation by storing an externally mutable object into Section.activeWeeks
EI2 team.projectpulse.section.Section.setCourse(Course) may expose internal representation by storing an externally mutable object into Section.course
EI2 team.projectpulse.section.Section.setRubric(Rubric) may expose internal representation by storing an externally mutable object into Section.rubric
EI2 new team.projectpulse.section.SectionController(SectionService, SectionToSectionDtoConverter, SectionDtoToSectionConverter, UserInvitationService, InstructorToInstructorDtoConverter) may expose internal representation by storing an externally mutable object into SectionController.sectionService
EI2 new team.projectpulse.section.SectionController(SectionService, SectionToSectionDtoConverter, SectionDtoToSectionConverter, UserInvitationService, InstructorToInstructorDtoConverter) may expose internal representation by storing an externally mutable object into SectionController.userInvitationService
EI2 new team.projectpulse.section.SectionService(SectionRepository, RubricRepository, InstructorRepository, UserUtils, UserRepository, UserInvitationService) may expose internal representation by storing an externally mutable object into SectionService.userInvitationService
EI2 new team.projectpulse.section.dto.SectionDto(Integer, String, String, String, Integer, String, List, Integer, Boolean, DayOfWeek, String, DayOfWeek, String) may expose internal representation by storing an externally mutable object into SectionDto.activeWeeks
EI2 new team.projectpulse.seed.DataInitializer(CourseRepository, InstructorRepository, PeerEvaluationRepository, ActivityRepository, PasswordEncoder, UserInvitationRepository, RequirementArtifactService, ArtifactLinkRepository, UseCaseService, DocumentTemplateRegistry, DocumentRepository, CommentThreadRepository) may expose internal representation by storing an externally mutable object into DataInitializer.requirementArtifactService
EI2 team.projectpulse.student.Student.setSection(Section) may expose internal representation by storing an externally mutable object into Student.section
EI2 team.projectpulse.student.Student.setTeam(Team) may expose internal representation by storing an externally mutable object into Student.team
EI2 new team.projectpulse.student.StudentController(StudentService, StudentRegistrationToStudentConverter, StudentToStudentDtoConverter, StudentDtoToStudentConverter) may expose internal representation by storing an externally mutable object into StudentController.studentService
EI2 new team.projectpulse.student.StudentService(StudentRepository, SectionRepository, UserInvitationService, PasswordEncoder, UserUtils) may expose internal representation by storing an externally mutable object into StudentService.userInvitationService
EI2 team.projectpulse.team.Team.addInstructor(Instructor) may expose internal representation by storing an externally mutable object into Team.instructor
EI2 team.projectpulse.team.Team.setSection(Section) may expose internal representation by storing an externally mutable object into Team.section
EI2 new team.projectpulse.team.TeamController(TeamService, TeamToTeamDtoConverter, TeamDtoToTeamConverter) may expose internal representation by storing an externally mutable object into TeamController.teamService
EI2 new team.projectpulse.user.MyUserPrincipal(PeerEvaluationUser) may expose internal representation by storing an externally mutable object into MyUserPrincipal.peerEvaluationUser
EI2 new team.projectpulse.user.UserController(ResetPasswordService, UserService) may expose internal representation by storing an externally mutable object into UserController.resetPasswordService
EI2 new team.projectpulse.user.UserService(UserRepository, ResetPasswordService, PasswordEncoder) may expose internal representation by storing an externally mutable object into UserService.resetPasswordService
EI2 new team.projectpulse.user.resetpassword.ResetPasswordService(ResetPasswordTokenRepository, EmailService, UserRepository) may expose internal representation by storing an externally mutable object into ResetPasswordService.resetPasswordTokenRepository

Dodgy code Warnings

Code Warning
DLS Dead store to updatedActivityDto in team.projectpulse.activity.ActivityController.addActivityComment(Integer, Map)
NP Possible null pointer dereference in team.projectpulse.evaluation.EvaluationService.generateEvaluationSummariesForStudent(Integer, String, String) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.evaluation.EvaluationService.lambda$generateEvaluationSummariesForStudent$12(GrantedAuthority) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.instructor.InstructorService.lambda$updateInstructor$4(GrantedAuthority) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.instructor.InstructorService.updateInstructor(Integer, Instructor) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.security.AuthService.createLoginInfo(Authentication) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.security.JwtProvider.createToken(Authentication) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.student.StudentService.lambda$updateStudent$3(GrantedAuthority) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.student.StudentService.updateStudent(Integer, Student) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.system.UserUtils.getUserCourseId() due to return value of called method
NP Possible null pointer dereference in team.projectpulse.system.UserUtils.getUserSectionId() due to return value of called method
NP Possible null pointer dereference in team.projectpulse.system.UserUtils.hasRole(String) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.system.UserUtils.lambda$getUserCourseId$0(GrantedAuthority) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.system.UserUtils.lambda$getUserSectionId$1(GrantedAuthority) due to return value of called method
NP Possible null pointer dereference in team.projectpulse.system.UserUtils.lambda$hasRole$6(String, GrantedAuthority) due to return value of called method

Details

CT_CONSTRUCTOR_THROW: Be wary of letting constructors throw exceptions.

Classes that throw exceptions in their constructors are vulnerable to Finalizer attacks

A finalizer attack can be prevented, by declaring the class final, using an empty finalizer declared as final, or by a clever use of a private constructor.

See SEI CERT Rule OBJ-11 for more information.

DLS_DEAD_LOCAL_STORE: Dead store to local variable

This instruction assigns a value to a local variable, but the value is not read or used in any subsequent instruction. Often, this indicates an error, because the value computed is never used.

Note that Sun's javac compiler often generates dead stores for final local variables. Because SpotBugs is a bytecode-based tool, there is no easy way to eliminate these false positives.

See CWE-563: Assignment to Variable without Use.

EI_EXPOSE_REP: May expose internal representation by returning reference to mutable object

Returning a reference to a mutable object value stored in one of the object's fields exposes the internal representation of the object.  If instances are accessed by untrusted code, and unchecked changes to the mutable object would compromise security or other important properties, you will need to do something different. Returning a new copy of the object is better approach in many situations.

See CWE-374: Passing Mutable Objects to an Untrusted Method.

EI_EXPOSE_REP2: May expose internal representation by incorporating reference to mutable object

This code stores a reference to an externally mutable object into the internal representation of the object.  If instances are accessed by untrusted code, and unchecked changes to the mutable object would compromise security or other important properties, you will need to do something different. Storing a copy of the object is better approach in many situations.

See CWE-374: Passing Mutable Objects to an Untrusted Method.

NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE: Possible null pointer dereference due to return value of called method

The return value from a method is dereferenced without a null check, and the return value of that method is one that should generally be checked for null. This may lead to a NullPointerException when the code is executed.