Monday, February 2, 2015

More languages supported

I was recently reading on dice.com about some obscure scripting languages (Scripting Languages you may not Know) and wanted to see if EZ-Metrix could count their source lines. This led me to read more in an article "The Next Big Programming Language You've Never Heard Of" about scripting languages in Wired Magazine. After only a few minutes to setup a new rule, EZ-Metrix was able to count all of the languages listed below:
  1. Candle: CandleScript is another single-developer scripting language. Developed by Henry Luo, Candle was built to solve issues with processing any hierarchical data.
  2. D: D is a language with C-like syntax and static typing. It pragmatically combines efficiency, control, and modeling power, with safety and programmer productivity.
  3. Papyrus: Papyrus is an entirely new scripting system created specifically for the Creation Kit.
  4. PIKT: PIKT® is cross-categorical, multi-purpose software for monitoring and configuring computer systems, administering networks, organizing system security, and much more.
  5. Swift: Apple's language Swift is a new programming language for iOS and OS X apps that builds on the best of C and Objective-C, without the constraints of C compatibility. 
  6. Wolfram: The Wolfram Language (popularly referred to as Mathematica, or simply M) is a general multi-paradigm programming language developed by Wolfram Research, that serves as the main interfacing language for Mathematica and the Wolfram Programming Cloud.
  7. Wren: Wren is a class-based concurrent open-source scripting language written in about 5,000 lines of C by ex-games programmer Bob Nystrom, author of the Games Programming Pattern book.
EZ-Metrix now supports 88 programming languages! See if yours in on the list.

Wednesday, January 21, 2015

Arduino Sketch support

Are you a hobbiest involved with the Arduino family of microcontroller boards? Most Arduino scripts are relatively short and sweet. However, the potential exists to build quite large and extensive projects with the Arduino Sketch language. If you need to know exactly how much Sketch you have created, you're in luck - EZ-Metrix supports Arduino Sketch language. Because "The Arduino language is based on C/C++" (according to the Arduino Reference), it can be counted with an EZ-Metrix rule like C++.

The example below (borrowed from the Arduino website, http://arduino.cc/en/Tutorial/Blink) serves as an example. EZ-Metrix counts this file (with a C++ rule); 9 lines of code, 4 blank lines and 11 comments, for a total of 24 lines.

Let me know if you're using EZ-Metrix on your Arduino Sketches (email me).


/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

Thursday, December 4, 2014

EZ-Metrix version 4.1.0.3 released!

We're pleased to announce a "better, faster and cheaper" EZ-Metrix.
What's New?
1. The Comparison feature now uses a more accurate and 33% faster algorithm (Levenshtein Distance).
2. The Difference threshold feature now works as a percentage of the line, instead of a fixed number of characters.
3. The Price has been reduced to attract new users...now only $9.95 per month, or $49.95 per year.
4. The first month is still FREE.
5. Now, EZ-Metrix supports more than 80 programming languages are supported (and counting).
6. New help system, now with complete definitions of all measures.
7. Updated User Guide, Admin Guide and Overview slides.

Now also on facebook! Stop by and say "like."

Many Thanks!
Thanks to Jason Jones and his team at Creative Software Services for their support on this project!
Thanks also to Mike Mah (QSM Associates) for the inspiration for this new version.

Sunday, October 26, 2014

Levenshtein Distance detects differences in lines of code

After chatting with a colleague Michael Mah about the finer points of code counters a couple weeks ago, I've been studying ways to detect differences between 2 lines of code for my EZ-Metrix product.
The problem is not simply to detect differences of any kind, as this could be accomplished by a simple string compare (e.g., does string A = string B?). The challenge is in deciding if the extent of the differences between the lines constitutes, in effect, a completely new line of code. In other words, at what point does the accumulation of differences between two lines of code exceed what one might characterize as 'changes' to the point where the line is considered brand new?
This research has revealed a solution called the Levenshtein Distance (LD) algorithm (en.wikipedia.org/wiki/Edit_distance). In simple terms, the LD is essentially the minimum number of character edits (adds, modifies or deletes) that it takes to change string A into string B. If applied to a code counter, this LD value could be used along with a threshold value to decide if a line of code has been modified (LD value below a threshold), or is new (LD value above a threshold).
In EZ-Metrix, I plan to implement a % threshold, which gives the user a (configurable) way to set their own difference threshold, which is relative to each line's length. This way, short and long lines get treated the same, with respect to characterizing the line as either modified or new. An EZ-Metrix user may want to choose a threshold value of, for example 75%, which would count a line as new, if the number of changed characters exceeds 75% of the number of characters in the original line. Otherwise, the line would be counted as modified.
In the near future, a new version of EZ-Metrix (v5.0) will be released, which implements LD, among other improvements.
I'm hopefully this improvement will be embraced by the industry.

Monday, September 1, 2014

EZ-Metrix for Windows?

After 6 years in the field, EZ-Metrix v4.1 has produced many comments from over 500 users. Now, finally we're considering taking action on these comments.
What's on the drawing board? A version of EZ-Metrix for Windows.
This "v5.0" will incorporate many of the features our users have been asking for:
1. Run locally, with no need to connect to the internet to measure source code.
2. Support more programming languages.
3. Support languages with complex rules (e.g., PHP).
4. Ability to delete individual reports (Admin only).
5. Support languages with multiple comment delimiters (e.g., JSP).
6. Improve the difference threshold from characters to percent.
7. Repair defects in the comparison algorithms.
If you have additional requested improvements for EZ-Metrix, let us know! We'll do our best to include as many as possible.

Thursday, April 5, 2012

EZ-Metrix measures Google's Go language

Several news stories emerged recently about Google's programming language called Go. Although Go has been around since 2007, it has gained credibility recently because of it's fast compilation, automatic semicolon insertion, multi-core CPU support and relatively simple syntax.

Background:
According to Wikipedia: "Go is a compiled, garbage-collected, concurrent programming language developed by Google Inc. The initial design of Go was started in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. Go was officially announced in November 2009. In May 2010, Rob Pike publicly stated that Go was being used "for real stuff" at Google. Go's "gc" compiler targets theLinux, Mac OS X, FreeBSD, OpenBSD and Microsoft Windows operating systems and the i386, AMD64, and ARM processor architectures."


Hello World sample code:
package main   
import "fmt" //text formatting package   
func main() {         
 fmt.Println("Hello, World") 
 }

Go and EZ-Metrix:
Because the Go language specification defines both a single-line comment delimiter (//) and a multi-line comment delimiter set (/*, */), EZ-Metrix has no trouble measuring the size of Go source code.

Conclusions:
If you're using Go on your next programming assignment (or inherited someone else's Go source), "Go" ahead and measure its size with EZ-Metrix. A free evaluation of EZ-Metrix is available at www.ez-metrix.com.

More:
Additional information about Go can be found at the official Go website: http://golang.org/

Friday, July 29, 2011

Mil & Aero Magazine features EZ-Metrix

In a July 5, 2011 article, author John Keller lists the company that invented EZ-Metrix®, James Heires Consulting, Inc. in an article about software verification tools.

"Because code counters like EZ-Metrix are routinely used in highly analytical tasks such as software verification, it stands to reason that the Military and Aerospace industries are interested in EZ-Metrix", said President James Heires, PMP.

The full Military & Aerospace Magazine article entitled: "Mathematical proof techniques, automated requirements tracing lead trends in software verification tools" can be read in full here: (http://www.militaryaerospace.com/index/display/article-display/9346321286/articles/military-aerospace-electronics/exclusive-content/2011/7/mathematical-proof.html)