ABL source code analysis with SonarQube. Gilles QUERRET Riverside Software
|
|
- Pierce Elliott
- 6 years ago
- Views:
Transcription
1 ABL source code analysis with SonarQube Gilles QUERRET Riverside Software
2 SonarQube SonarQube is a platform to manage code quality Free, open source, LGPL, web-based portal Backed by SonarSource Aggregates well-know tools from the Java world Static analysis (PMD, FindBugs, Checkstyle) Duplicate code (Squid, CPD) Code coverage (Cobertura, JaCoCo)
3 SonarQube plugins SonarQube is extensible, providing entry points to manage new languages Both open and closed source plugins (C#, Cobol, ) Extensions are not only for languages, but also for visualization And also rules which are applied on syntax trees (see next slides)
4 SonarQube portal
5 Project portal
6 Project portal
7 Technical debt Term coined by Ward Cunningham in 1992 Technical debt is a metaphor around the time it takes to work with low quality code : If technical debt is high, you ll pay high interest (in terms of time spent) each time you work on the project But you can pay down the principal by refactoring code You ll increase the debt if you add quick and dirty code Do you manager care about code quality? If you want to catch their attention, just let them know they have to pay the bill
8 Drill down into the code
9 What about ABL? Free, open-source, LGPL plugin provided by Riverside Software Plugins (and source code) can be downloaded from : They include parsers, rules management and issue reporting Sample rules also available Additional rules can be bought from Riverside Software Or you can implement them!
10 Lexer and parsers : 'define' 'variable' 'property' 'as' 'character' 'integer' : (' ' '\t' '\n')* -> HIDDEN ID : [a-za-z]* EOS : '.' ' ' ' ' ' ' ' ' define_variable foo as_integer. define_property_bar_as_character. define variable ID foo ID as integer ' ' define property bar as characte r ' ' ' ' ' ' ' '
11 Lexer and parsers defvar: KW_DEFINE KW_VARIABLE ID KW_AS DATATYPE KW_NO_UNDO? (KW_LABEL QUOTED_STRING)? defprop: KW_DEFINE (KW_PUBLIC KW_PROTECTED KW_PRIVATE)? (KW_STATIC KW_ABSTRACT)? KW_OVERRIDE? KW_PROPERTY ID KW_AS (DATATYPE CLASSNAME) ' ' ' ' ' ' ' ' rootnode define variable ID foo as integer ' ' procname: abc.p define ' ' property ' ' ID bar ' ' as ' ' characte r defvarnode name: foo datatype: int no-undo: false label: null defpropnode name: bar datatype: char modifier: public override : false
12 Another small example rootnode procname: eu/rssw/foo.cls classdefinition name: foo package: eu.rssw abstract: false defvarnode defpropnode methodnode methodnode constructornode varname: foo datatype: int no-undo: false label: null varname: bar datatype: char Modifier: public Override : false name: mtd1 modifier: private final : false returns: void params: char, int name: mtd2 modifier: public final : yes returns: eu.rssw.bar params: modifier: public final : yes params: int statementnode doblock type: FIND table: tt1 temp-table: true where: null no-error: true type: while condition: true ifblock type: while expression: not avail tt1 statementnode statementnode type: display stream: expression: tt1.fld1 stream: null type: leave blockname: null
13 Only parsing source code? Parsing can be done : On profiler output (data structures for execution times, code coverage, ) On DF files to know the database structure On XREF files
14 How to install? Download SonarQube 4.2 or 4.3 from Extract in any directory Download OpenEdge plugins from BitBucket to extensions/plugins directory Execute startsonar.sh! SonarQube uses by default an H2 database, which is OK only for tests Please refer to Sonar documentation if you want to use MySQL, MS-SQL or Oracle
15 How to analyze code? Analysis requires build output from PCT Still not using PCT? Go immediatly to and switch your build system to PCT! PCT is another open-source plugin for Ant (also from Riverside Software) Probably the most widely used build tool Perfect in combination with continuous integration
16 How to analyze code? Use the following options in PCTCompile : debuglisting = true listing = true keepxref = true xmlxref = true (PCT 186+) relativepaths = false
17 How to analyze code? Then use Sonar Ant task : <property name="sonar.projectkey" value="eu.rssw.product-db:dev" /> <property name="sonar.projectname" value="product - DB" /> <property name="sonar.projectversion" value="1" /> <property name="sonar.sources" value="schema" /> <property name="sonar.binaries" value="build" /> <sonar:sonar /> Add the following properties to connect to a remote Sonar instance : <property name="sonar.host.url" value=" /> <property name="sonar.jdbc.url" value="jdbc:..." />
18 What to expect? Source code import in the database Debug listing import in the database Basic metrics for source code Number of files, windows, includes, classes Lines of code, comments, blank lines Transaction scopes (from listing files) Code duplication (using tokenized source)
19 What to expect? XREF basic metrics Entry point to report issues and metrics Dump files abstract syntax tree and basic rules
20 Next developments Coming soon : Dependencies between procedures and classes (tangle index) ABL abstract syntax tree and rules Code coverage (from profiler output) Coming later : Prolint output management Progress Developer Studio integration What are you looking for? Please raise your hand
21 Writing your own rules Lint rules will have access either to the source tree, or to a fully built object The source tree know the exact position of your tokens Sonar entry point to report violations Rules have to be written in Java Implementation time is nothing compared to design time!
22 Implementing XREF rules wholeindexexpr = xpath.compile("//reference[@reference-type='search' and Detail='WHOLE-INDEX' and File-num='1']"); NodeList nodelist = (NodeList) wholeindexexpr.evaluate(doc, XPathConstants.NODESET); for (int zz = 0; zz < nodelist.getlength(); zz++) { Element element = (Element) nodelist.item(zz); reportissue(element, "WHOLE-INDEX"); }
23 Lint rule example Verification of variable name length = Priority.INFO, name = "Short variable names", description = Verifies that variable names are at least X = LintList.SONAR_WAY_PROFILE, priority = Priority.MINOR) public class ShortVarNamesRule extends AbstractLintRule { private static final int DEFAULT_MINIMUM_LENGTH = = "minimumlength", defaultvalue = "" + DEFAULT_MINIMUM_LENGTH) public int minimumlength = DEFAULT_MINIMUM_LENGTH; public boolean visit(variabledeclarationstatement decl) { if (decl.getname().length() <= minimumlength) reportissue(getfirstline(decl), decl.getname()); } } return true;
24 Developer Studio integration The Sonar database can be connected from Developer Studio Violations are displayed in the standard editor Lint rules can be executed locally
25 Questions?
26 Reference? Sonar Source : Sonar OE plugin demo site : Riverside Software : Contact : contact@riverside-software.fr
Custom rules development with SonarQube G I L L ES QUERRET R I VERSIDE S O F T WA R E
Custom rules development with SonarQube G I L L ES QUERRET R I VERSIDE S O F T WA R E About the speaker Pronounced \ʒil.ke.ʁe\ Started Riverside Software in 2007 Continuous integration in OpenEdge Multiple
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationMemoryLint. Petr Nejedlý, Radim Kubacki SUN Microsystems, BOF-9066
MemoryLint Petr Nejedlý, Radim Kubacki SUN Microsystems, http://www.sun.com/, http://www.netbeans.org BOF-9066 2007 JavaOne SM Conference Session BOF-9066 Goal Get ideas how to analyze content of Java
More informationIntelliJ IDEA Static Code Analysis Hamlet D'Arcy
IntelliJ IDEA Static Code Analysis Hamlet D'Arcy Canoo Engineering AG @HamletDRC http://hamletdarcy.blogspot.com Static Code Analysis Code Inspections JSR 305 and 308 Annotations Duplicate Detection Stack
More informationClasses Basic Overview
Final Review!!! Classes and Objects Program Statements (Arithmetic Operations) Program Flow String In-depth java.io (Input/Output) java.util (Utilities) Exceptions Classes Basic Overview A class is a container
More informationCS242 COMPUTER PROGRAMMING
CS242 COMPUTER PROGRAMMING I.Safa a Alawneh Variables Outline 2 Data Type C++ Built-in Data Types o o o o bool Data Type char Data Type int Data Type Floating-Point Data Types Variable Declaration Initializing
More informationABL Unit Testing Part 1: Test Strategy. Mike Fechner Director
ABL Unit Testing Part 1: Test Strategy Mike Fechner Director 2 3 Consultingwerk Software Services Ltd. Independent IT consulting organization Focusing on OpenEdge and related technology Located in Cologne,
More informationAnalyzing with SonarQube Scanner for Gradle
Analyzing with SonarQube Scanner for Gradle By SonarSource GNU LGPL 3 Issue Tracker Sources SonarQube Scanner for Gradle 2.7 Compatible with SonarQube 6.7+ (LTS) Table of Contents Features Compatibility
More informationComputational Expression
Computational Expression Variables, Primitive Data Types, Expressions Janyl Jumadinova 28-30 January, 2019 Janyl Jumadinova Computational Expression 28-30 January, 2019 1 / 17 Variables Variable is a name
More informationContinuous Integration & Code Quality MINDS-ON NUNO 11 APRIL 2017
Continuous Integration & Code Quality MINDS-ON NUNO BETTENCOURT (NMB@ISEP.IPP.PT) @DEI, 11 APRIL 2017 Continuous Integration - THE THEORY - NMB@DEI - 11 April, 2017 CONTINUOUS INTEGRATION & SOFTWARE QUALITY
More informationContinous architecture analysis. with SonarQube in 3D
Continous architecture analysis with SonarQube in 3D Software visualization Visualization of information about software systems Visualization of classes and components Simplified risk analysis for all
More informationData Types, Variables and Arrays. OOC 4 th Sem, B Div Prof. Mouna M. Naravani
Data Types, Variables and Arrays OOC 4 th Sem, B Div 2016-17 Prof. Mouna M. Naravani Identifiers in Java Identifiers are the names of variables, methods, classes, packages and interfaces. Identifiers must
More informationCompilers. Compiler Construction Tutorial The Front-end
Compilers Compiler Construction Tutorial The Front-end Salahaddin University College of Engineering Software Engineering Department 2011-2012 Amanj Sherwany http://www.amanj.me/wiki/doku.php?id=teaching:su:compilers
More informationChapter 1 Getting Started
Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different
More informationContinuous integration from the ground up
Continuous integration from the ground up GILLES QUERRET RIVERSIDE SOFTWARE About the speaker Pronounced \ʒil.ke.ʁe\ Started Riverside Software in 2007 Continuous integration and source code analysis in
More informationBeginner s guide to continuous integration
Beginner s guide to continuous integration Gilles QUERRET Riverside Software US PUG Challenge 2013 What s continuous integration? Build, deployment and tests are long and boring tasks Development cycles
More informationD B M G. SQL language: basics. Managing tables. Creating a table Modifying table structure Deleting a table The data dictionary Data integrity
SQL language: basics Creating a table Modifying table structure Deleting a table The data dictionary Data integrity 2013 Politecnico di Torino 1 Creating a table Creating a table (1/3) The following SQL
More informationTIBCO SonarQube. BusinessWorks 6.x Plugin.
TIBCO SonarQube BusinessWorks 6.x Plugin Guidelines Consulting Services Project Name SonarQube BusinessWorks 6.x Plugin Release 1.0.0 Date 21/12/2015 Primary Author Document Owner Kapil Shivarkar/TIBCO
More informationParser Tools: lex and yacc-style Parsing
Parser Tools: lex and yacc-style Parsing Version 6.11.0.6 Scott Owens January 6, 2018 This documentation assumes familiarity with lex and yacc style lexer and parser generators. 1 Contents 1 Lexers 3 1.1
More informationKU Compilerbau - Programming Assignment
716.077 KU Compilerbau - Programming Assignment Univ.-Prof. Dr. Franz Wotawa, Birgit Hofer Institute for Software Technology, Graz University of Technology April 20, 2011 Introduction During this semester
More informationCS164: Programming Assignment 2 Dlex Lexer Generator and Decaf Lexer
CS164: Programming Assignment 2 Dlex Lexer Generator and Decaf Lexer Assigned: Thursday, September 16, 2004 Due: Tuesday, September 28, 2004, at 11:59pm September 16, 2004 1 Introduction Overview In this
More informationTechnical Debt Reduction Using a Game Theoretic Competitive Source Control Approach
Technical Debt Reduction Using a Game Theoretic Competitive Source Control Approach Sarah Morrison-Smith sarah.morrisonsmith@msu. montana.edu Chad Marmon chad.marmon@msu.montana.edu Stephen Dighans stephen.dighans@msu.
More informationA Pascal program. Input from the file is read to a buffer program buffer. program xyz(input, output) --- begin A := B + C * 2 end.
A Pascal program program xyz(input, output); var A, B, C: integer; begin A := B + C * 2 end. Input from the file is read to a buffer program buffer program xyz(input, output) --- begin A := B + C * 2 end.
More informationPROGRAMMING FUNDAMENTALS
PROGRAMMING FUNDAMENTALS Q1. Name any two Object Oriented Programming languages? Q2. Why is java called a platform independent language? Q3. Elaborate the java Compilation process. Q4. Why do we write
More informationSoftware Clone Detection. Kevin Tang Mar. 29, 2012
Software Clone Detection Kevin Tang Mar. 29, 2012 Software Clone Detection Introduction Reasons for Code Duplication Drawbacks of Code Duplication Clone Definitions in the Literature Detection Techniques
More informationAP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS
AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this
More information(800) Toll Free (804) Fax Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days
Course Description This course introduces the Java programming language and how to develop Java applications using Eclipse 3.0. Students learn the syntax of the Java programming language, object-oriented
More informationCompiler Construction D7011E
Compiler Construction D7011E Lecture 2: Lexical analysis Viktor Leijon Slides largely by Johan Nordlander with material generously provided by Mark P. Jones. 1 Basics of Lexical Analysis: 2 Some definitions:
More informationLab 2 Tutorial (An Informative Guide)
Lab 2 Tutorial (An Informative Guide) Jon Eyolfson University of Waterloo October 18 - October 22, 2010 Outline Introduction Good News Lexer and Parser Infrastructure Your Task Example Conclusion Jon Eyolfson
More informationWhat Every Xtext User Wished to Know Industry Experience of Implementing 80+ DSLs
What Every Xtext User Wished to Know Industry Experience of Implementing 80+ DSLs EclipseCon Europe 2016 2016-10-26 Roman Mitin Avaloq Evolution AG Allmendstrasse 140 8027 Zurich Switzerland T +41 58 316
More information1 Lexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler
More informationParser Tools: lex and yacc-style Parsing
Parser Tools: lex and yacc-style Parsing Version 5.0 Scott Owens June 6, 2010 This documentation assumes familiarity with lex and yacc style lexer and parser generators. 1 Contents 1 Lexers 3 1.1 Creating
More informationRepeating patterns of boilerplate code (like parent/child navigation, Visitor pattern implementation, factory methods for parser tree construction)
Gymnast overview Study of org.eclipse.jdt.core.dom.astnode and subclasses reveals Repeating patterns of boilerplate code (like parent/child navigation, Visitor pattern implementation, factory methods for
More informationBasic Operations jgrasp debugger Writing Programs & Checkstyle
Basic Operations jgrasp debugger Writing Programs & Checkstyle Suppose you wanted to write a computer game to play "Rock, Paper, Scissors". How many combinations are there? Is there a tricky way to represent
More informationSemantic Analysis and Type Checking
Semantic Analysis and Type Checking The compilation process is driven by the syntactic structure of the program as discovered by the parser Semantic routines: interpret meaning of the program based on
More informationAssignment 10 SQL/CLR
1. CLR is common runtime language A. Same framework used by.net.. B. Why: Security, Reliability, Performance C. Now SQL hosts the CLR as a virtual machine inside SQL Server. D. Applications run in the
More informationboolean, char, class, const, double, else, final, float, for, if, import, int, long, new, public, return, static, throws, void, while
CSCI 150 Fall 2007 Java Syntax The following notes are meant to be a quick cheat sheet for Java. It is not meant to be a means on its own to learn Java or this course. For that you should look at your
More informationCreating a new CDC policy using the Database Administration Console
Creating a new CDC policy using the Database Administration Console When you start Progress Developer Studio for OpenEdge for the first time, you need to specify a workspace location. A workspace is a
More informationDara Hazeghi 12/22/11 COMS 4115 Fall 2011
Dara Hazeghi 12/22/11 COMS 4115 Fall 2011 Simple static imperative language for text processing Sparse, minimalist syntax C-like structure Allow programmer to easily and efficiently manipulate strings
More informationStatic Code Analysis to Find Bugs. Wright.edu CS7140 Spring 2013 (Slides collected from many sources)
Static Code Analysis to Find Bugs Wright.edu CS7140 Spring 2013 (Slides collected from many sources) Comparison of Defect-Detection Approaches Inspections? The combination of design and code inspections
More informationThe compilation process is driven by the syntactic structure of the program as discovered by the parser
Semantic Analysis The compilation process is driven by the syntactic structure of the program as discovered by the parser Semantic routines: interpret meaning of the program based on its syntactic structure
More informationInspection Customized Rule Usage. Summary. Creating Custom Rules. Creating Rules with Java Classes. Create Rules with XPath
Inspection Customized Rule Usage Summary This guide discusses how to add customized rules other than the standard inspection rules provided by egovframe. Creating Custom Rules Users can create Inspection
More informationSemantic Analysis. Lecture 9. February 7, 2018
Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average
More informationThe following steps will create an Eclipse project containing source code for Problem Set 1:
Problem Set 1 Programming Music Out: 27 August Due: Monday, 1 Sept (beginning of class) Collaboration Policy - Read Carefully For this problem set, you should work alone, but feel free to ask other students
More informationIntroduction to Java
Introduction to Java Module 1: Getting started, Java Basics 22/01/2010 Prepared by Chris Panayiotou for EPL 233 1 Lab Objectives o Objective: Learn how to write, compile and execute HelloWorld.java Learn
More informationCommon Misunderstandings from Exam 1 Material
Common Misunderstandings from Exam 1 Material Kyle Dewey Stack and Heap Allocation with Pointers char c = c ; char* p1 = malloc(sizeof(char)); char** p2 = &p1; Where is c allocated? Where is p1 itself
More informationSTUDENT LESSON A12 Iterations
STUDENT LESSON A12 Iterations Java Curriculum for AP Computer Science, Student Lesson A12 1 STUDENT LESSON A12 Iterations INTRODUCTION: Solving problems on a computer very often requires a repetition of
More informationLecture 10 Declarations and Scope
Lecture 10 Declarations and Scope Declarations and Scope We have seen numerous qualifiers when defining methods and variables public private static final (we'll talk about protected when formally addressing
More informationQueueBlock, ReversalADT, LinkedList,CustomerAccount, not MaintainCustomerData
Naming Conventions Rules Classes Use nouns Use whole words-avoid acronyms and abbreviations (unless the abbreviation is much more widely used than the long form, such as URL or HTML) Begin with upper case
More information1. Describe History of C++? 2. What is Dev. C++? 3. Why Use Dev. C++ instead of C++ DOS IDE?
1. Describe History of C++? The C++ programming language has a history going back to 1979, when Bjarne Stroustrup was doing work for his Ph.D. thesis. One of the languages Stroustrup had the opportunity
More informationAn Introduction To Writing Your Own Classes CSC 123 Fall 2018 Howard Rosenthal
An Introduction To Writing Your Own Classes CSC 123 Fall 2018 Howard Rosenthal Lesson Goals Understand Object Oriented Programming The Syntax of Class Definitions Constructors this Object Oriented "Hello
More informationLisp: Lab Information. Donald F. Ross
Lisp: Lab Information Donald F. Ross General Model program source text stream What you need to write lexical analysis lexemes tokens syntax analysis is_id, is_number etc. + grammar rules + symbol table
More informationDrop Table If Exists Sql Command Not Properly Ended
Drop Table If Exists Sql Command Not Properly Ended Wait, this does not work! SQL_ drop table if exists t, drop table if exists t * ERROR at line 1: ORA-00933: SQL command not properly ended. Okay. It
More informationCS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square)
CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square) Introduction This semester, through a project split into 3 phases, we are going
More informationVerification and Validation
2014-2015 Verification and Validation Part I : Extended Static Analysis Burkhart Wolff Département Informatique Université Paris-Sud / Orsay Static Analysis! We have seen test methods, and proof methods.
More informationC Pointers. 6th April 2017 Giulio Picierro
C Pointers 6th April 07 Giulio Picierro Functions Return type Function name Arguments list Function body int sum(int a, int b) { return a + b; } Return statement (return keyword
More informationTirgul 1. Course Guidelines. Packages. Special requests. Inner classes. Inner classes - Example & Syntax
Tirgul 1 Today s topics: Course s details and guidelines. Java reminders and additions: Packages Inner classes Command Line rguments Primitive and Reference Data Types Guidelines and overview of exercise
More informationBy the end of this section you should: Understand what the variables are and why they are used. Use C++ built in data types to create program
1 By the end of this section you should: Understand what the variables are and why they are used. Use C++ built in data types to create program variables. Apply C++ syntax rules to declare variables, initialize
More informationSQL DDL. Intro SQL CREATE TABLE ALTER TABLE Data types Service-based database in Visual Studio Database in PHPMyAdmin
SQL DDL Intro SQL CREATE TABLE ALTER TABLE Data types Service-based database in Visual Studio Database in PHPMyAdmin Steen Jensen, autumn 2017 Languages Languages for relational DBMSs are: SQL QBE Structured
More informationFINAL TERM EXAMINATION SPRING 2010 CS304- OBJECT ORIENTED PROGRAMMING
FINAL TERM EXAMINATION SPRING 2010 CS304- OBJECT ORIENTED PROGRAMMING Question No: 1 ( Marks: 1 ) - Please choose one Classes like TwoDimensionalShape and ThreeDimensionalShape would normally be concrete,
More informationCS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find
CS1622 Lecture 15 Semantic Analysis CS 1622 Lecture 15 1 Semantic Analysis How to build symbol tables How to use them to find multiply-declared and undeclared variables. How to perform type checking CS
More informationBuilding lexical and syntactic analyzers. Chapter 3. Syntactic sugar causes cancer of the semicolon. A. Perlis. Chomsky Hierarchy
Building lexical and syntactic analyzers Chapter 3 Syntactic sugar causes cancer of the semicolon. A. Perlis Chomsky Hierarchy Four classes of grammars, from simplest to most complex: Regular grammar What
More informationIntroduction: Manual Testing :
: What is Automation Testing? Use of Automation. Where do we use. Tools that Do Automation. Web Applications vs Standalone Applications. What is selenium? How selenium works. Manual Testing : HTML: Detailed
More informationObjectives. Chapter 4: Control Structures I (Selection) Objectives (cont d.) Control Structures. Control Structures (cont d.) Relational Operators
Objectives Chapter 4: Control Structures I (Selection) In this chapter, you will: Learn about control structures Examine relational and logical operators Explore how to form and evaluate logical (Boolean)
More informationThe NetRexx Interpreter
The NetRexx Interpreter http://www2.hursley.ibm.com/netrexx/ RexxLA / WarpTech -- 26 May 2000 Mike Cowlishaw IBM Fellow mfc@uk.ibm.com netrexxi Overview Introduction to NetRexx Demo. -- compiling and interpreting
More informationProject phase 1 Scanner front-end assigned Tuesday 2 September, due Tuesday 16 September
CS 351 Design of Large Programs, Fall 2003 1 Project phase 1 Scanner front-end assigned Tuesday 2 September, due Tuesday 16 September 1.1 Task Write Java classes and interfaces to implement the scanner
More informationCS201 ArrayLists, Generics, and Dynamic Data Structures (Chapters 14, 15)
CS201 ArrayLists, Generics, and Dynamic Data Structures (Chapters 14, 15) A data structure is a software construct used to organize our data in a particular way. Some common data structures include lists,
More informationC++ DATA TYPES BASIC CONTROL FLOW
C++ DATA TYPES BASIC CONTROL FLOW Problem Solving with Computers-I Chapter 1 and Chapter 2 CLICKERS OUT FREQUENCY AB Review: Program compilation What does it mean to compile a C++ program? A. Write the
More informationHomework 3 Semantic Analysis. Remi Meier Compiler Design
Homework 3 Semantic Analysis Remi Meier Compiler Design 28.10.2015 1 Compiler phases Javali Compiler x86 Assembly IR IR Front-end Optimizations Back-end Machine independent Machine dependent Lexical Analysis
More informationSPRING 13 CS 0007 FINAL EXAM V2 (Roberts) Your Name: A pt each. B pt each. C pt each. D or 2 pts each
Your Name: Your Pitt (mail NOT peoplesoft) ID: Part Question/s Points available Rubric Your Score A 1-6 6 1 pt each B 7-12 6 1 pt each C 13-16 4 1 pt each D 17-19 5 1 or 2 pts each E 20-23 5 1 or 2 pts
More informationMP 3 A Lexer for MiniJava
MP 3 A Lexer for MiniJava CS 421 Spring 2010 Revision 1.0 Assigned Tuesday, February 2, 2010 Due Monday, February 8, at 10:00pm Extension 48 hours (20% penalty) Total points 50 (+5 extra credit) 1 Change
More informationCSE 331 Final Exam 6/7/16
Name There are 12 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. The exam is closed book, closed notes, closed
More informationChapter 4. Defining Classes I
Chapter 4 Defining Classes I Introduction Classes are the most important language feature that make object oriented programming (OOP) possible Programming in Java consists of dfii defining a number of
More informationCA Compiler Construction
CA4003 - Compiler Construction Semantic Analysis David Sinclair Semantic Actions A compiler has to do more than just recognise if a sequence of characters forms a valid sentence in the language. It must
More informationName Definition Example Differences
Big Integer Instantiation Don't create instances of already existing BigInteger (BigInteger.ZERO, BigInteger.ONE) andfor Java 1.5 onwards, BigInteger.TEN and BigDecimal (BigDecimal.ZERO, BigDecimal.ONE,
More informationIntroduce C# as Object Oriented programming language. Explain, tokens,
Module 2 98 Assignment 1 Introduce C# as Object Oriented programming language. Explain, tokens, lexicals and control flow constructs. 99 The C# Family Tree C Platform Independence C++ Object Orientation
More informationCS61C Machine Structures. Lecture 4 C Pointers and Arrays. 1/25/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/
CS61C Machine Structures Lecture 4 C Pointers and Arrays 1/25/2006 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L04 C Pointers (1) Common C Error There is a difference
More informationChapter 4: Control Structures I (Selection) Objectives. Objectives (cont d.) Control Structures. Control Structures (cont d.
Chapter 4: Control Structures I (Selection) In this chapter, you will: Objectives Learn about control structures Examine relational and logical operators Explore how to form and evaluate logical (Boolean)
More informationCOMP250: Stacks. Jérôme Waldispühl School of Computer Science McGill University. Based on slides from (Goodrich & Tamassia, 2004)
COMP250: Stacks Jérôme Waldispühl School of Computer Science McGill University Based on slides from (Goodrich & Tamassia, 2004) 2004 Goodrich, Tamassia The Stack ADT A Stack ADT is a list that allows only
More informationSemantic Analysis. Compiler Architecture
Processing Systems Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan Source Compiler Architecture Front End Scanner (lexical tokens Parser (syntax Parse tree Semantic Analysis
More informationc) And last but not least, there are javadoc comments. See Weiss.
CSCI 151 Spring 2010 Java Bootcamp The following notes are meant to be a quick refresher on Java. It is not meant to be a means on its own to learn Java. For that you would need a lot more detail (for
More informationMEASURE YOUR CODE USING CODE METRICS. CS 599 Software Metrics and Models Hana Alarifi
MEASURE YOUR CODE USING CODE METRICS CS 599 Software Metrics and Models Hana Alarifi Overview Quality code is the top priority for a good developer. The code must be not only bug free code but also understandable,
More informationSourceGen Project. Daniel Hoberecht Michael Lapp Kenneth Melby III
SourceGen Project Daniel Hoberecht Michael Lapp Kenneth Melby III June 21, 2007 Abstract Comverse develops and deploys world class billing and ordering applications for telecommunications companies worldwide.
More informationIntroduction to Java https://tinyurl.com/y7bvpa9z
Introduction to Java https://tinyurl.com/y7bvpa9z Eric Newhall - Laurence Meyers Team 2849 Alumni Java Object-Oriented Compiled Garbage-Collected WORA - Write Once, Run Anywhere IDE Integrated Development
More informationThe Compiler So Far. Lexical analysis Detects inputs with illegal tokens. Overview of Semantic Analysis
The Compiler So Far Overview of Semantic Analysis Adapted from Lectures by Profs. Alex Aiken and George Necula (UCB) Lexical analysis Detects inputs with illegal tokens Parsing Detects inputs with ill-formed
More informationDb2 Alter Table Alter Column Set Data Type Char
Db2 Alter Table Alter Column Set Data Type Char I am trying to do 2 alters to a column in DB2 in the same alter command, and it doesn't seem to like my syntax alter table tbl alter column col set data
More informationAnatomy of a Compiler. Overview of Semantic Analysis. The Compiler So Far. Why a Separate Semantic Analysis?
Anatomy of a Compiler Program (character stream) Lexical Analyzer (Scanner) Syntax Analyzer (Parser) Semantic Analysis Parse Tree Intermediate Code Generator Intermediate Code Optimizer Code Generator
More informationKeysight Test Automation Platform
Keysight Test Automation Platform TAP Presented by Team TAP Objectives Introduce you to TAP Architecture Show how the TAP SDK integrates with Visual Studio Provide an overview of TAP Plugin Development
More informationDrop Table If Exists Oracle Sql Command Not Properly Ended
Drop Table If Exists Oracle Sql Command Not Properly Ended SQL_ drop table if exists t, drop table if exists t * ERROR at line 1: ORA-00933: SQL command not properly ended. Okay. It was the Oracle MySQL
More informationRYERSON POLYTECHNIC UNIVERSITY DEPARTMENT OF MATH, PHYSICS, AND COMPUTER SCIENCE CPS 710 FINAL EXAM FALL 97 INSTRUCTIONS
RYERSON POLYTECHNIC UNIVERSITY DEPARTMENT OF MATH, PHYSICS, AND COMPUTER SCIENCE CPS 710 FINAL EXAM FALL 97 STUDENT ID: INSTRUCTIONS Please write your student ID on this page. Do not write it or your name
More informationCSE450. Translation of Programming Languages. Lecture 14: Arrays!
CSE450 Translation of Programming Languages Lecture 14: Arrays! Arrays in Tubular Arrays in Tubular have the following form: array(type) var_name; This should create a new variable that is an array of
More informationWARNING for Autumn 2004:
CSE 413 Programming Languages Autumn 2003 Max Points 50 Closed book, closed notes, no electronics. Do your own work! WARNING for Autumn 2004 Last year s exam did not cover Scheme and Java, but this year
More information9. The Compiler I Syntax Analysis 1
Chapter 9: The Compiler I Syntax Analysis 1 9. The Compiler I Syntax Analysis 1 This chapter is work in progress, and thus it includes inconsistencies with the English grammar. As you parse the chapter
More informationCS152 Programming Language Paradigms Prof. Tom Austin, Fall Syntax & Semantics, and Language Design Criteria
CS152 Programming Language Paradigms Prof. Tom Austin, Fall 2014 Syntax & Semantics, and Language Design Criteria Lab 1 solution (in class) Formally defining a language When we define a language, we need
More informationCIS 120 Midterm II November 16, 2012 SOLUTIONS
CIS 120 Midterm II November 16, 2012 SOLUTIONS 1 1. Java vs. OCaml (22 points) a. In OCaml, the proper way to check whether two string values s and t are structurally equal is: s == t s = t s.equals(t)
More informationChapter 11: Compiler II: Code Generation
Elements of Computing Systems, Nisan & Schocken, MIT Press, 2005 Chapter 11: Compiler II: Code Generation www.idc.ac.il/tecs Usage and Copyright Notice: Copyright 2005 Noam Nisan and Shimon Schocken This
More informationAssist. Prof. Dr. Caner ÖZCAN
Assist. Prof. Dr. Caner ÖZCAN Memory Structure When a variable defined it is stored somewhere in memory. Memory can be thought as block consist of cells. When a variable defined, required number of cell
More informationType Checking. Chapter 6, Section 6.3, 6.5
Type Checking Chapter 6, Section 6.3, 6.5 Inside the Compiler: Front End Lexical analyzer (aka scanner) Converts ASCII or Unicode to a stream of tokens Syntax analyzer (aka parser) Creates a parse tree
More informationComputer Science II. OO Programming Classes Scott C Johnson Rochester Institute of Technology
Computer Science II OO Programming Classes Scott C Johnson Rochester Institute of Technology Outline Object-Oriented (OO) Programming Review Initial Implementation Constructors Other Standard Behaviors
More informationHonu. Version November 6, 2010
Honu Version 5.0.2 November 6, 2010 Honu is a family of languages built on top of Racket. Honu syntax resembles Java. Like Racket, however, Honu has no fixed syntax, because Honu supports extensibility
More information