private static List<Classification> getClassifications(GraphContext graphContext) { final List<Classification> classifications = new ArrayList<>(); ClassificationService classificationService = new ClassificationService(graphContext); for (ClassificationModel classificationModel : classificationService.findAll()) { for (FileModel fileModel : classificationModel.getFileModels()) { ClassificationImpl classification = new ClassificationImpl(classificationModel.getElement().id()); classification.setClassification(classificationModel.getClassification()); classification.setDescription(classificationModel.getDescription()); classification.setEffort(classificationModel.getEffort()); classification.setRuleID(classificationModel.getRuleID()); classification.setIssueCategory(new IssueCategoryImpl(classificationModel.getIssueCategory())); classification.setFile(fileModel.asFile()); classification.setLinks(asLinks(classificationModel.getLinks())); classifications.add(classification); classification.setQuickfixes(asQuickfixes(classificationModel.getQuickfixes())); } } return classifications; }
classification.setClassification(classificationTitle); classification.setDescription(description); classification.setEffort(0); classification.setIssueCategory(cat); classification.setRuleID(rule.getId()); if (fileModel instanceof DuplicateArchiveModel) classification.addFileModel(fileModel); if (fileModel instanceof SourceFileModel) ((SourceFileModel) fileModel).setGenerateSourceReport(true); if (!StringUtils.equals(description, classification.getDescription())) LOG.warning("The description of the newly attached classification differs from the same-titled existing one, so the old description is being changed." + System.lineSeparator()+" Clsf title: " + classification.getClassification() + System.lineSeparator()+" Old desc: " + classification.getDescription() + System.lineSeparator()+" New desc: " + description); classification.setDescription(description);
/** * Attach the given link to the classification, while checking for duplicates. */ public ClassificationModel attachLink(ClassificationModel classificationModel, LinkModel linkModel) { for (LinkModel existing : classificationModel.getLinks()) { if (StringUtils.equals(existing.getLink(), linkModel.getLink())) { return classificationModel; } } classificationModel.addLink(linkModel); return classificationModel; } }
for (ClassificationModel classification : classificationService.findAll()) if (classification.getIssueDisplayMode() == IssueDisplayMode.DETAIL_ONLY) continue; Set<String> tags = classification.getTags(); if (!TagUtil.checkMatchingTags(tags, includeTags, excludeTags, false)) continue; for (FileModel file : classification.getFileModels()) continue; RuleSummaryKey key = new RuleSummaryKey(classification.getEffort(), classification.getRuleID(), classification.getClassification()); ProblemSummary summary = ruleToSummary.get(key); if (summary == null) summary = new ProblemSummary(UUID.randomUUID().toString(), classification.getIssueCategory(), classification.getRuleID(), classification.getClassification(), 0, classification.getEffort()); for (LinkModel link : classification.getLinks()) summary.addFile(classification.getDescription(), file);
for (FileModel fileModel : classification.getFileModels()) String links = buildLinkString(classification.getLinks()); String ruleId = classification.getRuleID() != null ? classification.getRuleID() : ""; String classificationText = classification.getClassification() != null ? classification.getClassification() : ""; String description = classification.getDescription() != null ? classification.getDescription() : ""; String projectNameString = ""; if (fileModel.getProjectModel() != null) String filePath = fileModel.getFilePath(); String[] strings = new String[] { ruleId, classification.getIssueCategory().getCategoryID(), classificationText, description, links, projectNameString, fileName, filePath, "N/A", String.valueOf( classification.getEffort()) }; writeCsvRecordForProject(projectToFile, outputFolderPath, parentRootProjectModel, strings);
classification.setEffort(effort); classification.setIssueDisplayMode(this.issueDisplayMode); issueCategoryModel = IssueCategoryRegistry.loadFromGraph(event.getGraphContext(), this.issueCategory.getCategoryID()); classification.setIssueCategory(issueCategoryModel); classification.setDescription(StringUtils.trim(description)); classification.setClassification(StringUtils.trim(text)); classification.setTagModel(tagSetService.getOrCreate(event, tags)); classification.setRuleID(((Rule) context.get(Rule.class)).getId()); StringUtils.trim(link.getTitle()), StringUtils.trim(link.getLink())); classification.addLink(linkModel); classification.addQuickfix(quickfix.createQuickfix(graphContext));
classificationModel.setClassification("Transformed to: " + description); classificationModel.setEffort(effort); classificationModel.addFileModel(payload); classificationModel.setRuleID(((Rule) context.get(Rule.class)).getId()); classificationModel.setIssueDisplayMode(IssueDisplayMode.DETAIL_ONLY);
if (applicationDetails.getClassifications().containsKey(classification.getId())) continue; classificationReducedDTO.setTitle(strings.getOrAdd(classification.getClassification())); classificationReducedDTO.setEffort(classification.getEffort()); for (String tag : classification.getTags()) classificationReducedDTO.getTags().add(new TagReducedDTO(strings.getOrAdd(tag), 0)); applicationDetails.getClassifications().put(classification.getId(), classificationReducedDTO); fileDTO.getClassificationIDs().add(classification.getId());
private void createParseFailureClassification(GraphRewrite event, EvaluationContext context, XmlFileModel sourceFile) { sourceFile.setGenerateSourceReport(true); ClassificationService classificationService = new ClassificationService(event.getGraphContext()); ClassificationModel model = classificationService.attachClassification(event, context, sourceFile, XmlFileModel.NOT_VALID_XML, null); model.setEffort(0); // do not rely on default 0 value and set it that transparently IssueCategoryRegistry issueCategoryRegistry = IssueCategoryRegistry.instance(event.getRewriteContext()); model.setIssueCategory(issueCategoryRegistry.loadFromGraph(event.getGraphContext(), IssueCategoryRegistry.POTENTIAL)); TagSetService tagSetService = new TagSetService(event.getGraphContext()); model.setTagModel(tagSetService.getOrCreate(event, Collections.singleton(NOT_VALID_XML_TAG))); } }
"WebSphere Enterprise Java Bean Binding XML Descriptor describes how to bind enterprise beans or its resources. For instance EJB JNDI or data sources for entity beans." + " \n Red Hat JBoss EAP uses standard Java EE annotations or deployment descriptors like `ejb-jar.xml` or `jboss-ejb3.xml`. Please read JBoss EAP 7 documentation."); classification.setEffort(3); IssueCategoryModel cat = IssueCategoryRegistry.loadFromGraph(graphContext, IssueCategoryRegistry.MANDATORY); classification.setIssueCategory(cat);
@Override public void perform(GraphRewrite event, EvaluationContext context, XmlFileModel payload) { ClassificationService classificationService = new ClassificationService(event.getGraphContext()); ClassificationModel classificationModel = classificationService.attachClassification(event, context, payload, IssueCategoryRegistry.MANDATORY, "WebSphere web service extension descriptor (ibm-webservices-ext)", "WebSphere Webservice Extension XML Deployment Descriptor. \n" + "This deployment descriptor extension is IBM specific and it needs to be migrated to JBossWS. \n" + "JBossWS implements the latest JAX-WS specification, which users can reference for any vendor-agnostic web service usage need. \n" + "You can migrate deployment descriptors following the links below. \n"); classificationModel.setEffort(3); GraphContext graphContext = event.getGraphContext(); LinkService linkService = new LinkService(graphContext); LinkModel documentationEAP6Link = linkService.create(); documentationEAP6Link.setDescription("JAX-WS Web Services (JBoss EAP 6)"); documentationEAP6Link.setLink( "https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.4/html/Development_Guide/chap-JAX-WS_Web_Services.html"); classificationService.attachLink(classificationModel, documentationEAP6Link); LinkModel documentationEAP7Link = linkService.create(); documentationEAP7Link.setDescription("Developing JAX-WS Web Services (JBoss EAP 7)"); documentationEAP7Link.setLink( "https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.0/html/developing_web_services_applications/developing_jax_ws_web_services"); classificationService.attachLink(classificationModel, documentationEAP7Link); LinkModel documentationCommunityLink = linkService.create(); documentationCommunityLink.setDescription("Assigning Client and Endpoint Configurations (JBoss EAP 7)"); documentationCommunityLink.setLink("https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.0/html-single/developing_web_services_applications/#ws_endpoint_assign_config"); classificationService.attachLink(classificationModel, documentationCommunityLink); TechnologyTagService technologyTagService = new TechnologyTagService(event.getGraphContext()); technologyTagService.addTagToFileModel(payload, "WebSphere WS Extension", TechnologyTagLevel.IMPORTANT); }
@Override default List<FileModel> transformToFileModel() { return this.getFileModels(); } }
classificationModel.addFileModel(payload); linkModel.setDescription(description); linkModel.setLink(XsltTransformationService.TRANSFORMEDXML_DIR_NAME + "/" + fileName); classificationModel.addLink(linkModel);
ParameterizedPatternResult parseResult = titlePattern.parse(c.getClassification()); if (parseResult.matches() && parseResult.isValid(event, context))
if (checkTags && !classificationModel.matchesTags(includeTags, excludeTags)) continue; if (!issueCategoryIDs.isEmpty() && !issueCategoryIDs.contains(classificationModel.getIssueCategory().getCategoryID())) continue;
public IssueCategoryModel vertexToKey(Vertex effortReportVertex) { return frame(effortReportVertex).getIssueCategory(); }
/** * This method just attaches the {@link ClassificationModel} to the {@link FileModel}. * It will only do so if this link is not already present. */ public ClassificationModel attachClassification(GraphRewrite event, ClassificationModel classificationModel, FileModel fileModel) { if (fileModel instanceof DuplicateArchiveModel) { fileModel = ((DuplicateArchiveModel) fileModel).getCanonicalArchive(); } if (!isClassificationLinkedToFileModel(event, classificationModel, fileModel)) { classificationModel.addFileModel(fileModel); if (fileModel instanceof SourceFileModel) ((SourceFileModel) fileModel).setGenerateSourceReport(true); } ClassificationServiceCache.cacheClassificationFileModel(event, classificationModel, fileModel, true); return classificationModel; }
for (ClassificationModel classification : classificationService.findAll()) if (classification.getIssueDisplayMode() == IssueDisplayMode.DETAIL_ONLY) continue; Set<String> tags = classification.getTags(); if (!TagUtil.checkMatchingTags(tags, includeTags, excludeTags, false)) continue; for (FileModel file : classification.getFileModels()) continue; RuleSummaryKey key = new RuleSummaryKey(classification.getEffort(), classification.getRuleID(), classification.getClassification()); ProblemSummary summary = ruleToSummary.get(key); if (summary == null) summary = new ProblemSummary(UUID.randomUUID().toString(), classification.getIssueCategory(), classification.getRuleID(), classification.getClassification(), 0, classification.getEffort()); for (LinkModel link : classification.getLinks()) summary.addFile(classification.getDescription(), file);
for (FileModel fileModel : classification.getFileModels()) String links = buildLinkString(classification.getLinks()); String ruleId = classification.getRuleID() != null ? classification.getRuleID() : ""; String classificationText = classification.getClassification() != null ? classification.getClassification() : ""; String description = classification.getDescription() != null ? classification.getDescription() : ""; String projectNameString = ""; if (fileModel.getProjectModel() != null) String filePath = fileModel.getFilePath(); String[] strings = new String[] { ruleId, classification.getIssueCategory().getCategoryID(), classificationText, description, links, projectNameString, fileName, filePath, "N/A", String.valueOf( classification.getEffort()) }; writeCsvRecordForProject(projectToFile, outputFolderPath, parentRootProjectModel, strings);
classification.setEffort(effort); classification.setIssueDisplayMode(this.issueDisplayMode); issueCategoryModel = IssueCategoryRegistry.loadFromGraph(event.getGraphContext(), this.issueCategory.getCategoryID()); classification.setIssueCategory(issueCategoryModel); classification.setDescription(StringUtils.trim(description)); classification.setClassification(StringUtils.trim(text)); classification.setTagModel(tagSetService.getOrCreate(event, tags)); classification.setRuleID(((Rule) context.get(Rule.class)).getId()); StringUtils.trim(link.getTitle()), StringUtils.trim(link.getLink())); classification.addLink(linkModel); classification.addQuickfix(quickfix.createQuickfix(graphContext));